Javascript 在函数实例中使用原型添加值
我的代码中有一个构造函数。我已经创建了该构造函数的实例。在新创建的实例中,我想使用prototype方法添加值或函数。但我在做这件事的时候出错了。这是我的密码Javascript 在函数实例中使用原型添加值,javascript,Javascript,我的代码中有一个构造函数。我已经创建了该构造函数的实例。在新创建的实例中,我想使用prototype方法添加值或函数。但我在做这件事的时候出错了。这是我的密码 它应该是构造函数的原型,而不是该函数生成的对象: a.prototype.three = 3; 您不能使用prototype键访问对象的原型,因为原型引用不是这样公开的。不过,您可以使用属性来执行此操作,但这是不推荐使用的。如果需要获取对象的原型,可以使用object.getPrototypeOf方法: Object.getProtot
它应该是构造函数的原型,而不是该函数生成的对象:
a.prototype.three = 3;
您不能使用prototype
键访问对象的原型,因为原型引用不是这样公开的。不过,您可以使用属性来执行此操作,但这是不推荐使用的。如果需要获取对象的原型,可以使用object.getPrototypeOf
方法:
Object.getPrototypeOf(j) === a.prototype; // true
这里有点混乱,因为“原型”这个词有两种意思。函数原型是一个对象,当函数像构造函数一样使用时,在构造新对象时使用它。对象原型是对存储继承方法的对象的引用。
J
的原型未定义,因为您无法直接访问它,因此无法直接将属性3设置为J
的原型
这就是为什么您可以将属性添加到a'
s prorotype,但不能添加到j'
s prototype,您可以尝试一下
j.three=3;
或a.prototype.three=3代码>
fiddle在新创建的实例中,我想使用prototype方法来添加值或函数。
-为什么?您混淆了函数对象的默认prototype属性和引用其构造函数的继承所用的所有对象的内部。@RobG:我想您是对的这两个词都通俗地使用。ECMAScript对内部属性使用[[Prototype]]
,但读写起来很麻烦。除了“实例的内部原型”之外,必须有更好的名称。
j.three=3;