2015-11-14 3 views
1

У меня проблема с пониманием одного аспекта.Как изменить значение свойства объекта

var Car = function(name, loc) { 
    'use strict'; 
    this.name = name; 
    this.loc = loc; 
    this.methods = { 
     move: function() { 
      this.loc++; 
     }, 
     show: function() {  
      console.log('Position of ' + this.name + ' is: ' + this.loc); 
     } 
    }; 
}; 
var amy = new Car('amy', 1); 
var ben = new Car('ben', 9); 

Когда я использую this.loC++, это относится к объекту методов, а не к объекту Car. И местоположение автомобиля не увеличивается. Мой вопрос заключается в том, как перейти к контексту объекта автомобиля из методов?

+0

См http://stackoverflow.com/questions/4886632/what-does-var-that- this-mean-in-javascript – joews

ответ

3

Вы можете сохранить родительский контекст переменной (var _this = this;), как это

var Car = function(name, loc) { 
 
    'use strict'; 
 
    var _this = this; 
 
    
 
    this.name = name; 
 
    this.loc = loc; 
 
    this.methods = { 
 
     move: function() { 
 
      _this.loc++; 
 
     }, 
 
     show: function() {  
 
      console.log('Position of ' + _this.name + ' is: ' + _this.loc); 
 
     } 
 
    }; 
 
}; 
 

 
var amy = new Car('amy', 1); 
 
var ben = new Car('ben', 9); 
 

 
amy.methods.move(); 
 
amy.methods.move(); 
 
amy.methods.show();

+1

Большое спасибо :) – Steave

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