JS中的原型連
阿新 • • 發佈:2020-07-17
參考網址: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
下圖為原型鏈查詢流程圖