prototype & _proto_
阿新 • • 發佈:2018-11-19
每個js學習者的必經之路,雖然複雜,必須攻克。網上收集的資源會不定期更新到這裡。沒事了看看。
在JS中並不是所有物件都擁有 prototype
屬性,只有函式型別的變數擁有該屬性。也就是隻有通過 function
,或者是與 function
對應的構造方法 new Function()
宣告的變數。
而所有的JS物件是存在一個內建的 [[Prototype]]
屬性,指向它“父類”的 prototype
。在Node當中就提供了一個 __proto__
代替了這個屬性指向父類的 prototype
。
通過以下這種方式,就能獲得一個物件的 root
原型。
var Obj = function(){}; var o = new Obj(); o.__proto__ === Obj.prototype; //=> true o.__proto__.constructor === Obj; //=> true Obj.__proto__ === Function.prototype; //=> true Obj.__proto__.constructor === Function; //=> true Function.__proto__ === Function.prototype; //=> true Object.__proto__ === Object.prototype; //=> false Object.__proto__ === Function.prototype; //=> true Function.__proto__.constructor === Function;//=> true Function.__proto__.__proto__; //=> {} Function.__proto__.__proto__ === o.__proto__.__proto__; //=> true o.__proto__.__proto__.__proto__ === null; //=> true