2014-01-31 47 views
0

好吧,所以我有一个变量,我设置为另一个变量,这是一个javascript对象。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然后我重置当前为null,但this.root仍然指向JavaScript对象。是否有可能使用当前变量将this.root设置为null?

+0

你只分配'null'到'current',不'this.root'。将'null'或'current'指定给'this.root'。 –

+0

想看看这个场景,你知道'test()'里面的'this.root',你只是简单地为它创建'current'类别的别名,并试图通过它来取消'this.root'。这样做并不意味着背后的意图,因为你可以只废除'this.root'。你打算发送'current'给某种方法,并在该方法中将其取消以使'this.root'无效?有没有其他情况背后的具体原因试图这样做? – Mahesha999

回答

0

正确的代码如下。您可以更改引用对象的属性,而不是引用对象本身。

Test.prototype.test = function() { 
      var current = this; 

      current.root = null; 

      console.log(this.root); 

     } 

     var t = new Test(); 
     t.test(); 
0

没有办法使用currentcurrent以及this.root做改变this.root的对象只是引用。

我喜欢Marijn Haverbeke解释的方式在Eloquent Javascript

你应该想象变量触手,而不是箱。它们不包含价值观,它们掌握它们 - 两个变量可以指相同的价值。只有程序仍然保留的值才能被它访问。

因此,他们都只是抓取物体,一个参考无法改变其他