构造函数、实例、原型三者之间的关系
任何函数都具有一个prototype属性,该属性是一个对象。
function F () {}
console.log(F.prototype) // => object
F.prototype.sayHi = function () {
console.log('hi!')
}
构造函数的prototype对象默认都有一个constructor属性,指向prototype对象所在函数。
console.log(F.constructor === F) // => true
通过构造函数得到的实例对象内部会包含一个指向构造函数的prototype对象的指针_proto_ 。
var instance = new F()
console.log(instance.__proto__ === F.prototype) // => true
__proto__ 是非标准属性。
实例对象介意直接访问原型对象成员。
instance.sayHi() // => hi!
总结:
- 任何函数都具有一个prototype属性,该属性是一个对象
- 构造函数的prototype对象默认都有一个constructor属性,指向prototype对象所在函数
- 通过构造函数得到的实例对象内部会包含一个执行构造函数的prototype对象的指针_proto_
- 所有实例都直接或间接继承了原型对象的成员
- 还没有人评论,欢迎说说您的想法!