1. 程式人生 > 實用技巧 >JS中的原型連

JS中的原型連

參考網址:https://www.jianshu.com/p/f8c7c55025fc

1.理解字面量,建構函式,建構函式例項的關係。

//只有建構函式有原型屬性 - prototype,它是一個物件
// 1.字面量物件
var A = {};
console.log(A.prototype); // undefined
// 2.建構函式
var B = function (name) {
    this.name = name;
}
console.log(B.prototype); // {constructor: ƒ}
console.log(typeof B.prototype); // object
// 3.建構函式例項 var b = new B('top'); console.log(b.prototype); // undefined //原型物件中有個constructor屬性,constructor指向建構函式本身,也只有原型物件具有constructor屬性 console.log(B.prototype.constructor === B); // true console.log(b.constructor === B); // true //所有的物件都有 __protp__屬性,它也是個物件 console.log(B.__proto__); // ƒ () { [native code] }
console.log(b.__proto__ === B.prototype); // true console.log(a.__proto__ === Object.prototype); // true

2.理解原型鏈

  原型鏈的核心就是當自身不存在的屬性時,依賴物件的_proto_的指向,就一層層的扒出建立物件的建構函式,直至到Object時,就沒有_proto_指向了。

console.log(Object.prototype.__proto__);   // null

下圖為原型鏈查詢流程圖