我的代码中有一个构造函数。我已经创建了该构造函数的实例。在新创建的实例中,我想通过使用prototype方法添加值或函数。但是这样做时我遇到了错误。这是我的代码fiddle
function a(){
this.d=9
}
a.prototype.one=1;
a.prototype.two=2;
var j= new a();
j.prototype.three=3;
console.log(j)
答案 0 :(得分:4)
它应该是构造函数的原型,而不是此函数产生的对象:
a.prototype.three = 3;
您无法使用prototype
密钥访问对象的原型,因为原型参考不会像这样暴露。您可以使用__proto__
属性来执行此操作,但不推荐使用此属性。如果您需要获取对象的原型,可以使用Object.getPrototypeOf
方法:
Object.getPrototypeOf(j) === a.prototype; // true
这里有点令人困惑,因为"原型"有点意思是两件事。函数原型是在使用函数时构造新对象时使用的对象,就像构造函数一样。对象原型是对存储继承方法的对象的引用。
答案 1 :(得分:1)
J
的原型未定义,因为您无法直接访问它,因此您无法直接将属性三设置为j
的原型。
这就是为什么你能够将属性添加到a'
的prorotype而不是j'
的原型,你可以尝试
j.three=3;
或a.prototype.three = 3;