我有模块......
var myModule = (function(){
var obj = new Object();
obj.name = "";
obj.sayName = function(){
obj.name = "jon";
console.log(obj.name);
console.log(this.name);
}
return obj;
})()
myModule.sayName();
根据console.log语句打印两次“jon”。
但是我真的不明白为什么'this'是正确的,因为它会返回对函数的引用并且'undefined'不是吗?
答案 0 :(得分:3)
您正在呼叫myModule.sayName()
,this
sayName
内的myModule
为myModule
。
obj
的值是来自obj.name
的对象引用的副本(因为这是从匿名IIFE返回的内容)。
因此this.name
和{{1}}的值相同。