prototype和_proto_淺析
阿新 • • 發佈:2018-11-08
JS的原型分成兩類:隱式原型和顯示原型
顯示原型只有函式有,隱式原型所有物件都有
_proto_是實現繼承的原理, 通過_proto_指向實現繼承
1.預設情況
function person(name) {
this.name = name;
}
var person1 = new person();
person1.prototype._proto_ = person.prototype
person.prototype._proto_ = Object.prototype
2.其他情況
function Bar(){} function Foo(){} Foo.prototype = new Bar() (通過new 例項建構函式實現繼承) Foo.prototype.__proto__ === Bar.prototype ================================================================ function Foo(){} //我們不想讓Foo繼承誰,但是我們要自己重新定義Foo.prototype Foo.prototype = { a:10, b:-10 } //這種方式就是用了物件字面量的方式來建立一個物件 Foo.prototype.__proto__ === Object.prototype console.log(Foo.prototype.constructor); //[Function: Object]
總結:
也就是說,通過物件字面量構造出來的物件,其__proto__
都是指向Object.prototype
通過new操作符呼叫的函式就是建構函式。由建構函式構造的物件,其__proto__
指向其建構函式的原型物件。