在函数实例中使用原型添加值

时间:2015-01-08 09:57:16

标签: javascript

我的代码中有一个构造函数。我已经创建了该构造函数的实例。在新创建的实例中,我想通过使用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)

2 个答案:

答案 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;

小提琴http://jsfiddle.net/s4g2n453/4/