我认为,我误解了Javascript如何传承遗产。 具体而言,原型内部变量似乎在多个不同次级目标之间共享。 最容易用法典说明:
var A = function()
{
var internal = 0;
this.increment = function()
{
return ++internal;
};
};
var B = function() {};
// inherit from A
B.prototype = new A;
x = new B;
y = new B;
$( #hello ).text(x.increment() + " - " + y.increment());
这一产出<代码>1 - 2(在JSBin上测试),而我完全预计结果为1 - 1
,因为我有两个不同的物体。
我如何确保<代码> A 物体在的多种情况下共有物体 B
。
问题是,每一种办法都用来制造私人变数,而这种变数是细劳的,也是在行动上,如果你改变一个标的私人变数,就会使所有人发生变化。 I.e. 它比实际的私人变数更像是一种私人固定财产。
因此,如果你想拥有一些私人东西,更像非公共不变,那么上述任何办法都是好的,但并非针对实际的私人变量。 私人变量仅与 Java本的单一吨物体有效。
<>Solution:按照BGerrissen的回答,修改B
的声明,并按原样将原型工程留给:
var B = function() { A.apply(this, arguments); };