我的课程属性为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;
答案 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;
}
}