__proto__與prototype的區別
基本概念剖析
【重點】
prototype
是函數特有屬性,指向原型對象;__proto__
是幾乎所有對象都有的內部屬性,指向其構造函數的原型對象!
詳細對比
prototype(原型)
- 是函數對象的屬性
- 用于存放該函數所有實例共享的屬性和方法
- 當函數作為構造函數使用時,新創建的對象會鏈接到這個原型對象
proto(原型鏈接)
- 是實例對象的內部屬性
- 指向創建該對象的構造函數的prototype
- 是對象訪問原型鏈的入口
- 已被棄用,現代代碼應使用
Object.getPrototypeOf()
// 代碼示例
function Person(name) {this.name = name;
}// 在原型上添加方法
Person.prototype.sayHello = function() {console.log(