2016-06-06 10 views
1

Я пытаюсь понять внутренности Javascript. У меня есть недоразумение ключевого слова this. Везде указано, что ключевое слово this ссылается на объект, который вызывает функцию.Javascript это ключевое слово внутри функции

Но, насколько я знаю, function - это объект.
Так считают этот пример

var car = { 
    brand: "Nissan", 
    getBrand: function(){ 
    var closure = function(){ 
     console.log(this.brand); 
     console.log(this); 
    }; 
    return closure(); 
    } 
}; 

car.getBrand(); 

Почему функция this ссылка внутри closure точки к global объекта вместо getBrand оберточной? Опять же все объекты в javascript, поэтому я не могу понять это поведение.

Просьба пояснить это с точки зрения внутренних деталей.

Благодаря

+1

Я думаю, что это более близкий дубликат: http://stackoverflow.com/q/9644044/1666547 –

ответ

4

Поскольку значение this определяется как function называется .. closure вызывается без ссылки на context и глобальном контексте

Использование Function.prototype.call для указания thiswindow (в браузере) контекст, а функция invoked

var car = { 
 
    brand: "Nissan", 
 
    getBrand: function() { 
 
    var closure = function() { 
 
     console.log(this.brand); 
 
     console.log(this); 
 
    }; 
 
    return closure.call(this); 
 
    } 
 
}; 
 

 
car.getBrand();

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

  • Нет связанных вопросов^_^