完全搞定原型鏈、prototype原型對象與__proto__對象原型的聯繫

原型鏈

一、每個構造函數都包含一個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); // 男 靜態成員只能經過構造函數訪問
相關文章
相關標籤/搜索