JavaScript对象甚至在新对象中存储以前的值

时间:2017-09-07 12:58:33

标签: javascript arrays class object

在对象的情况下,JavaScript确实表现得很奇怪。虽然我不确定这是否是正确的行为。

在新的Object()中,我在对象中设置了一些属性。下次当我再次执行新的Object()时,我获取在前一个实例中设置的值而不是默认值。哎呀。

以下示例清楚地解释了问题

function testo() {}

testo.prototype = {
  obj: {
    what: {
      value: 5
    }
  },
  done: function () {
    console.log(this.obj.what.value);
    this.obj.what = {value: 10};
  }
};

var x = new testo();
x.done();
var y = new testo();
y.done();

上述代码的输出是: -

5
10

我原以为: -

5
5

为什么呢?因为我正在创建新的Class(),并且在之前的实例中我使用'this'设置了值,它不是静态的,并且它内部的所有对象的默认属性都应该显示出来。

我创建了上面的示例作为演示。我在我的图书馆面对这个问题。我知道它与对象有关,存储为参考。

我应该如何继续获得预期的输出?有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您可以将prototype属性(对于所有实例都相同)移动到该类中的此对象。



function testo() {
    this.obj = { what: { value: 5 } };
}

testo.prototype = {
    done: function () {
        console.log(this.obj.what.value); this.obj.what = { value: 10 };
    }
};

var x = new testo();
x.done();

var y = new testo();
y.done();