引用类对象属性

时间:2018-03-20 20:09:50

标签: javascript

我的课程属性为data.num。代码如下。正如您在第一个案例中所见,// Warning! Pseudo Code // Sample One class Human { constructor() { this.eyes = null; } addEye() { this.eyes = 1; } } const william = new Human(); const data = { num: william.eyes } william.addEye(); // data = { num: null } // Warning! Pseudo Code // Sample One class Human { constructor() { this.eyes = []; } addEye() { this.eyes.push(1); } } const william = new Human(); const data = { num: william.eyes } william.addEye(); // data = { num: [1] }在第二个参考中保存了值。在我的项目中,我不需要数组,所以我需要以某种方式制作第一个样本以保存参考,如第二个。知道怎么样?



container.Register(_ => new Foo(), new PerScopeLifetime());
container.Register<IFoo>(factory => factory.GetInstance<Foo>());
container.Register<IBar>(factory => factory.GetInstance<Foo>());
container.Register<IApp>(factory => factory.GetInstance<Foo>());
container.Register<ISee>(factory => factory.GetInstance<Foo>());
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:3)

JavaScript有一小组内置类型,其中一个是number,它是一个“值类型”(据我所知,您的human.eyes值始终为{{ 1}}或null值。)

JavaScript不支持对number值的引用,因此在此number之后,data = { num: william.eyes }值将是data.num的副本,而不是您正确推测的引用

但是,JavaScript 支持使用自定义getter / setter逻辑(william.eyes)的非平凡属性。你可以结合对Object.defineProperty对象的引用来使用它来获得你想要的行为:

william

答案 1 :(得分:-1)

如果我在这里得到了你想要做的事情,以下内容适合你:

class Human {
  constructor() {
    this.eyes = 0;
  }

  addEye() {
    this.eyes += 1;
  }
}