关于this问题

对于关键字this,其实很好理解,谁调用我就指向谁。下面举个例子说明:

        其实这也是在学习闭包中的一个案例:

        var name = "The window";

        var obj = {
        name : "The Object",
        getNameFunc : function(){
            return function(){
                return this.name;
            };
        }
    };
    alert(obj.getNameFunc()());

    很多博客中都是利用的这个例子,但是大部分博客说这个代码的结果是The window. 其实这是错误的。

    我们仔细分析下:

    第一步:obj.getNameFunc()    这一步很明显就可以看出我们的调用者是obj;而此时返回了一个函数对象,我们假想一个中间变量temp 接收这个对象。然后执行第二步。

    第二步:从第一步中得知运行到这里了 temp();然后此时调用对象为谁,这里并没明确指出,然而它所处的容器是什么,恰恰是我们的window对象,所以可想而知,在return this.name;这步中的this恰好指的是window。 然后window对象本身就有个默认属性name,且默认值为""。

    由以上得知弹出的对话框中的值为一个空字符串"", 不相信你们可以去测试验证。(如有误,请大神指出,谢谢。)

posted @ 2015-12-23 16:42  玉树临枫  阅读(156)  评论(0编辑  收藏  举报