我有一个tes
测试服务,其中有两个对象显示在我的Typescript代码中:
test: ITestView;
tests: ITestView[];
此代码检查tes.tests
数组中的每个对象,当id
匹配时,它会将数组中的对象指定为另一个对象tes.test
:
tes.tests.forEach((test: ITestRow) => {
test.current = false;
if (test.id == id) {
tes.test = test; // << Linking them somehow here
test.current = true;
}
});
稍后我会这样做:
tes.test.current = false;
此代码将tes.tests[0].current
的值设置为false,将tes.test.current
设置为false。
当我现在这样做时:
tes.test = null;
此代码将tes.test
的值设置为null,但不对tes.tests[]
数组执行任何操作。
有人可以解释为什么它不会影响tes.tests[]
数组吗?
答案 0 :(得分:2)
test = foo; // test references existing object foo
tests[0] = test; // test[0] also references existing object foo
test = null; // test doesn't reference anything, but tests[0] still does
根据您的期望,您可以:
tests[0] = null; // tests[0] doesn't reference anything
或:
tests.splice(0,1); // removed the 1st item from the tests
// not tests array became shorter!
答案 1 :(得分:0)
我认为快速而简单的答案是
tes.test = null;
不会摧毁它指向的对象。 tes.test
现在什么都没有。
为了澄清,tes.test.current = false
更改了两个对象是因为它引用了对象current
指向的tes.test
键。
tes.test = null;
上面的代码没有对tes.tests []进行任何更改,因为它简单使tes.test
指向任何内容而不是更改它指向的对象。
我希望我很清楚!