2014-01-31 2 views
0

ok, поэтому у меня есть переменная, которую я установил в другую переменную, которая является объектом 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, а затем сбросить ток до нуля, но this.root все еще указывает на JavaScript Object. Можно ли также установить this.root в значение null, используя текущую переменную?

+0

Вы только назначая '' null' к current', а не 'this.root'. Назначьте 'null' или' current' 'this.root'. –

+0

Хотелось бы увидеть сценарий, вы знаете 'this.root' внутри' test() ', и вы просто создаете для него псевдоним' current', и пытаетесь свести его с помощью this.root'. Это не делает никаких намерений за это, так как вы можете аннулировать только 'this.root'. Планируете ли вы отправить «текущий» на какой-либо метод и свернуть его в этом методе, чтобы «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

Там нет никакого способа сделать изменение this.root использованием current, current, а также this.root лишь ссылки на объект.

Мне нравится, как Marijn Haverbeke объясняет это в Eloquent Javascript:

Вы должны представить себе переменные, как щупальца, а не коробки. Они не содержат значений, они понимают их - две переменные могут ссылаться на одно и то же значение. Доступ к ним могут получить только те значения, которые программа по-прежнему удерживает.

Таким образом, они оба просто захватывая объект, один задание не может изменить другие

Смежные вопросы