OOP Javascript – 隔离类中的对象

前端之家收集整理的这篇文章主要介绍了OOP Javascript – 隔离类中的对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建一个主对象,我可以创建多个实例,每个实例都继承子项(具有唯一/隔离属性).但是,当我这样做时,对象的属性(在被更改之后)正在改变所有创建的对象.我可能没有正确解释这个,但这个例子应该很清楚.
Main = function(){};

// Extending the main class with new object. Doing it this way so I can have these in
// separate files.
Main.prototype.foo = {
    bar: 1
}

// First instance of Main().
var A = new Main();

// Second instance of Main().
var B = new Main();

// Set the bar property to different values for each Main() object.
A.foo.bar = 2;
B.foo.bar = 3;

// Both A.foo.bar and B.foo.bar return 3.
alert(A.foo.bar);
alert(B.foo.bar);

我想要发生的是A.foo.bar返回2和B.foo.bar返回3,这样我就有了彼此独立的孤立对象.

有任何想法吗?我只是错过了一些明显的东西吗?非常感谢!

解决方法

“foo”属性位于原型对象上,并且只有其中一个属性.当您通过任何实例设置它时,您正在影响同一个共享属性.

您可以在构造函数添加实例属性

function Main() {
    this.instanceProperty = 1;
  }

然后那将是每个实例.

原型不是“主模板”或类似的东西;这是一个真实的对象.它不会复制到实例上.相反,运行时知道它在那里,并且当对实例上实际不存在的实例上的属性进行引用时,它知道走向原型链并在那里寻找属性.

猜你在找的JavaScript相关文章