Любая функция , которую вы вызываете без четкой ссылки на this
, будет иметь this
, установленное на глобальный объект, или в «строгом» режиме на undefined
(что не так в вашем пример).
Вы можете явно гарантировать, что this
привязан к obj
, если хотите:
var obj = {
name: "Mohit",
func: function(){
var self = this;
(function(){
console.log(this.name);
console.log(self.name)
}).call(this)
}
}
obj.func();
Используя .call(this)
, вы указываете значение для this
внутри вызываемой функции.