好吧所以我有一个变量,我设置为另一个变量,这是一个javascript对象。
function Test(){
this.root = {"data":"mydata"};
}
Test.prototype.test = function(){
var current = this.root;
current = null;
console.log(this.root);
}
var t = new Test();
t.test();
我当前指向this.root然后我将current重置为null但是this.root仍然指向javascript对象。是否可以使用当前变量将this.root设置为null?
答案 0 :(得分:0)
正确的代码如下。您可以更改引用对象的属性而不是引用对象本身。
Test.prototype.test = function() {
var current = this;
current.root = null;
console.log(this.root);
}
var t = new Test();
t.test();
答案 1 :(得分:0)
无法使用this.root
进行更改current
,current
以及this.root
只是对象的引用。
我喜欢Marijn Haverbeke在Eloquent Javascript中解释它的方式:
你应该把变量想象成触手而不是盒子。它们不包含值,它们掌握它们 - 两个变量可以引用相同的值。只有程序仍然保持的值才能被访问。
所以他们都只是抓住了对象,一个参考不能改变另一个