Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我将一个对象链接到一个对象数组时,两个对象的值是如何链接的?_Javascript_Typescript - Fatal编程技术网

Javascript 当我将一个对象链接到一个对象数组时,两个对象的值是如何链接的?

Javascript 当我将一个对象链接到一个对象数组时,两个对象的值是如何链接的?,javascript,typescript,Javascript,Typescript,我有一个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

我有一个
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.tests[0].current的值设置为false,并将
tes.test.current的值设置为false

当我现在这样做时:

tes.test = null;
此代码将
tes.test
的值设置为null,但不对
tes.tests[]
数组执行任何操作

有人能解释一下为什么它不影响
tes.tests[]
数组吗

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[0] = null; // tests[0] doesn't reference anything
或:


我认为简单明了的答案是

tes.test = null;
不会破坏它指向的对象<代码>测试。测试现在不指向任何内容

为了澄清,
tes.test.current=false
更改这两个对象是因为它引用了对象
tes.test
所指向的
current

tes.test = null;
上面的代码没有对tes.tests[]进行任何更改,因为它简单地使
tes.test
指向空,而不是更改它所指向的对象。
我希望我是清楚的

我认为快速而简单的答案是

tes.test = null;
不会破坏它指向的对象<代码>测试。测试现在不指向任何内容

为了澄清,
tes.test.current=false
更改这两个对象是因为它引用了对象
tes.test
所指向的
current

tes.test = null;
上面的代码没有对tes.tests[]进行任何更改,因为它简单地使
tes.test
指向空,而不是更改它所指向的对象。
我希望我是清楚的

这是一个很好的解释方式。使用示例是解释概念的一个非常好的方法。我会记住,在将来的回答中,我会写下来。这是一个很好的解释方式。使用示例是解释概念的一个非常好的方法。我会记住,为了将来的答案,我会写下来。