考虑下面的代码Nodejs为什么数组用静态原型初始化?
Class = function()
{
//this.array = [];
}
Class.prototype.array = [];
Class.prototype.str = null;
var a = new Class();
var b = new Class();
a.array.push("a");
console.log (a.array);
b.array.push("b");
console.log (b.array);
a.str = "a";
console.log (a.str);
console.log (b.str);
b.str = "b";
console.log (a.str);
console.log (b.str);
如果我们运行原样,我们会发现,修改类的array
在任何情况下,都静态完成 - 在a
改变阵列反映在b
和副反之亦然。但是,修改str
变量,虽然初始化方式与array
不一样。
如果我们在构造函数中取消注释行,那么在任何情况下对数组的更改都不会静态完成。
我偶然发现了一个nodejs错误?我无法在任何地方找到有关这种情况的详细信息,因此任何人都可以解释为什么nodejs有这种行为?
Node和浏览器中的行为没有区别。这只是JavaScript的工作方式。 – Pointy