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

Javascript 在函数实例中使用原型添加值,javascript,Javascript,我的代码中有一个构造函数。我已经创建了该构造函数的实例。在新创建的实例中,我想使用prototype方法添加值或函数。但我在做这件事的时候出错了。这是我的密码 它应该是构造函数的原型,而不是该函数生成的对象: a.prototype.three = 3; 您不能使用prototype键访问对象的原型,因为原型引用不是这样公开的。不过,您可以使用属性来执行此操作,但这是不推荐使用的。如果需要获取对象的原型,可以使用object.getPrototypeOf方法: Object.getProtot

我的代码中有一个构造函数。我已经创建了该构造函数的实例。在新创建的实例中,我想使用prototype方法添加值或函数。但我在做这件事的时候出错了。这是我的密码


它应该是构造函数的原型,而不是该函数生成的对象:

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;