【发布时间】:2017-03-09 08:17:43
【问题描述】:
在 js 中我创建了一个对象。我想向对象的原型添加一个新属性,并且该属性将因实例而异。 现在为了增加价值,我使用了 get。但这给了我错误。我已经添加了下面的代码。
我怎样才能完成这件事?
我已经用谷歌搜索过了。我所学到的只是 get 他们为现有财产增加了价值。但我想为新属性增加价值,这会因实例而异。
var computer = function (name, ram) {
this.name = name;
this.ram = ram;
};
Object.defineProperty(computer.prototype, "graphic", {
set: function graphic(value) {
this.graphic = value;
},
get: function graphic() {
return this.graphic;
},
});
var vio = new computer("sony", "8gb");
vio.graphic = "gtx980";
console.log(vio.graphic);
错误消息:
【问题讨论】:
-
But it gives me error- 我们应该猜猜错误是什么? -
您不能将属性 getter/setter 设置为它自己的名称。使用本地变量,这在原型方法上很烦人,或者 get/set
this._graphicfronthis.graphic代替 -
错误:
Out of stack space,很明显。 -
在 Firefox 中是
too much recursion- 这应该会使问题更加明显 -
您可以删除所有添加属性的代码。
vio.graphic = "gtx980";就是你所需要的。
标签: javascript object get prototype