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

Add value using prototype in function instance

本文关键字:原型 增加 函数 实例      更新时间:2023-09-26

我的代码中有一个构造函数。我创建了该构造函数的实例。在新创建的实例中,我想使用原型方法添加值或功能。但是我在这样做时遇到错误。这是我的代码小提琴

function a(){
this.d=9
}
a.prototype.one=1;
a.prototype.two=2;

var j= new a();
j.prototype.three=3;
console.log(j)

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

a.prototype.three = 3;

不能使用 prototype 键访问对象的原型,因为原型引用不会像这样公开。不过,您可以使用__proto__属性来执行此操作,但这已被弃用。如果您需要获取对象的原型,您可以使用Object.getPrototypeOf方法:

Object.getPrototypeOf(j) === a.prototype; // true

这里有点令人困惑,因为"原型"这个词意味着两件事。函数原型是在构造新对象时使用的对象,当函数像构造函数一样使用时。对象原型是对存储继承方法的对象的引用。

J 的原型是未定义的,因为不能直接访问它,所以不能直接将属性 three 设置为 j 的原型。

这就是为什么您可以向a'的原型添加属性,但不能向j'原型添加属性,您可以尝试

j.three=3; 

或者a.prototype.three = 3;

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