经典面试题(3):关于this指向的常见面试题
大年初三凌晨1点,继续我们的经典面试题系列,今天我们了解一下关于函数内部this指向的问题,用一个简单的例子来讲解一下:
看下面的代码,你觉得输出的结果是什么?
var myObject = { foo: "bar", func: function() { var self = this; console.log(this.foo); console.log(self.foo); (function() { console.log(this.foo); console.log(self.foo); }()); } }; myObject.func();
代码中我们4次调用来console.log()来在控制台输出内容,请问4次的内容分别是什么?
在外部函数中, this 和 self 两者都指向了 myObject ,因此两者都可以正确地引用和访问 foo 。
在内部函数中, this不再指向myObject。其结果是,this.foo 没有在内部函数中被定义,相反,指向到本地的变量 self 保持在范围内,并且可以访问。 (在ECMA 5之前,在内部函数中的this 将指向全局的 window 对象;反之,因为作为ECMA 5,内部函数中的功能this 是未定义的。)
所以,上面的代码将输出以下内容到控制台:
bar bar undefined bar
热门文章
热门文章
原创教程 原创教程
原创教程
附加习题:
趣味职场 趣味职场
趣味职场
职场焦虑:
感到迷茫:
培训出身:
培训费用:
搞笑黑话:
职业自由:
职场形象:
合作推广分割线
合作推广分割线