考虑以下代码:
var oNew = Object.create(MyConstructor.prototype);
比如说,MyConstructor
在构造函数中定义了“自己的”数据成员。会oNew
继承那些数据成员吗?会oNew
继承所有的MyConstructor.prototype
方法吗?此外,MyConstructor.prototype
可能本身从一个对象继承,比如new f()
。
比如说,
MyConstructor
在构造函数中定义了“自己的”数据成员。oNew 会继承那些数据成员吗?
不,不会;原型的constructor
功能有意地与原型分开。的主要好处之一Object.create
是它允许您将对象创建过程与对象实例化过程分开(使用 using 调用构造函数new
确实结合了两者)。
oNew 会继承所有的
MyConstructor.prototype
方法吗?
是的,即使使用Object.create
.
function MyConstructor () {
this.ownProperty = 'value'
}
MyConstructor.prototype.inheritedProperty = 'value'
var createdObject = Object.create(MyConstructor.prototype)
console.log(createdObject)
console.log('inheritedProperty' in createdObject) //=> true
console.log('ownProperty' in createdObject) //=> false
var constructedObject = new MyConstructor()
console.log(constructedObject)
console.log('inheritedProperty' in constructedObject) //=> true
console.log('ownProperty' in constructedObject) //=> true
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句