相关疑难解决方法(0)

Javascript原型属性与数组和对象字段无法正常工作

我使用以下代码获得意外结果:

var TestModel, u, u2;

function TestModel() {}
TestModel.prototype.a = null;
TestModel.prototype.b = [];

u = new TestModel();
u.a = 1;
u.b.push(1);

u2 = new TestModel();
u2.a = 2;
u2.b.push(2);

console.log(u.a, u.b);     // outputs: 1 [1,2]
console.log(u2.a, u2.b);   // outputs: 2 [1,2]
Run Code Online (Sandbox Code Playgroud)

我发现它令人惊讶u.b并且u2.b包含相同的值,即使每个实例都TestModel应该根据我设置原型的方式拥​​有自己的实例变量.所以这是我期待的输出:

console.log(u.a, u.b);     // expecting: 1 [1]
console.log(u2.a, u2.b);   // expecting: 2 [2]
Run Code Online (Sandbox Code Playgroud)

如果我设置b为一个对象并在其上设置键而不是将其用作数组,则会发生同样的事情.我在这里不理解什么?

javascript prototype-programming

9
推荐指数
2
解决办法
1867
查看次数

标签 统计

javascript ×1

prototype-programming ×1