我是 Javascript 新手,想知道如何修改原型(prototype)中的公共(public)变量。
function Thing (val)
{
this.x = val;
this.addToX = function (valIn)
{
this.x += valIn;
};
}
function ChildThing ()
{
this.y = 55;
}
ChildThing.prototype = new Thing(10);
var frank = new ChildThing();
console.log("out1: " + frank.x);
frank.addToX(10);
console.log("out2: " + frank.x);
此代码采用原型(prototype) x 中的值为 10 的值,并在 addToX 函数中将其加上 10。新的 x 值存储在顶级对象中,而不是替换原型(prototype)中当前的 x 值。
有没有办法覆盖原型(prototype)中现有的 x 或者我使用了 Javascript 错误?
最佳答案
这要看情况。改变原型(prototype)上的 x
有何意义?通常您不想更改共享属性。但我想可能有一个用例(生成新的 id?)。
至于问题:你可以简单地这样做:
this.addToX = function(valIn) {
ChildThing.prototype.x += valIn;
};
我再次不建议这样做。
编辑您可以通过在将其设置为原型(prototype)之前定义原型(prototype)来在不引用子级的情况下进行制作,即
var my_proto = new Thing(10);
ChildThing.prototype = my_proto;
然后
this.addToX = function(valIn) {
my_proto.x += valIn;
};
或者你甚至可以玩 the singleton pattern .
关于javascript - 如何操作原型(prototype)中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26148691/