为什么要参考这个'返回值,应该是未定义的?

时间:2014-08-31 10:12:20

标签: javascript

我有模块......

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'不是吗?

1 个答案:

答案 0 :(得分:3)

您正在呼叫myModule.sayName()this sayName内的myModulemyModule

obj的值是来自obj.name的对象引用的副本(因为这是从匿名IIFE返回的内容)。

因此this.name和{{1}}的值相同。