我有以下源代码。
testObj = {}
function testFun()
{
this.name = "hi";
}
function test () {
var instanceOfTestFun = new testFun();
testObj.pointerToFun = instanceOfTestFun;
instanceOfTestFun = null;
console.log(testObj);
}
$(document).ready(test);
我希望在 testObj 的控制台输出中看到“null”,但我看到了 testFun 函数。我认为 javascript 对对象使用“pass by ref”。
请给我提意见...
最佳答案
testObj.pointerToFun
和 instanceOfTestFun
是对同一个对象的两个引用。
当您编写 instanceOfTestFun = null
时,您将 instanceOfTestFun
更改为不指向任何内容。
这不会影响 testObj.pointerToFun
,它仍然引用原始对象。
如果您更改原始对象(例如 instanceOfTestFun.name = "bye"
),您将通过两个访问器看到更改,因为它们都指向(现在更改的)对象。
关于javascript - 为什么这个变量还活着?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8335220/