一、每個構造函數都包含一個prototype屬性,指向另外一個對象。這個prototype就是一個對象,這個對象的全部屬性和方法,都會被構造函數所擁有。函數
// 構造函數 function Person(uname, age) { this.uname = uname; this.age = age; } let person = new Person("小黑", 19); Person.prototype.sex = '未知'; // 在原型對象上定義屬性或方法 Person.sex = '男'; // 靜態成員
二、實例對象都會有一個屬性__proto__ 指向prototype原型對象this
console.log(Person.prototype === person.__proto__); // true
三、原型對象(prototype)和對象原型(proto)內都有一個 constructor 屬性,稱爲構造函數,由於它指回構造函數自己spa
console.log(Person.prototype.constructor === person.__proto__.constructor); // true
四、原型鏈和成原查找機制就近原則:首先查找對象自己有的屬性prototype
console.log(person.sex); // 未知 去原型對象中查找 person.sex = '女'; // 構造函數成員 console.log(person.sex); // 女 就近原則 console.log(Person.sex); // 男 靜態成員只能經過構造函數訪問