有如下代码片段:var obj = {a: 1, b: function () {alert(this.a)}}; - Kaiqisan
程序员文章站
2022-03-11 09:21:29
有如下代码片段:var obj = {a: 1, b: function () {alert(this.a)}}; var fun = obj.b; fun();弹出a弹出1弹出undefined什么也看不到正确答案: C 你的答案: B (错误)如果是 obj.b()的话,this指向还是正常的,选B是对的,但这次又把执行分为两步,又因为 this的值要等到代码真正执行时才能确定在这里使用 fun() 该方法未被obj调用,而是在前面定义 var f...
有如下代码片段:
var obj = {a: 1, b: function () {alert(this.a)}};
var fun = obj.b;
fun();
-
弹出a
-
弹出1
-
弹出undefined
-
什么也看不到
正确答案: C 你的答案: B (错误)
如果是 obj.b()的话,this指向还是正常的,选B是对的,但这次又把执行分为两步,又因为 this的值要等到代码真正执行时才能确定
在这里使用 fun() 该方法未被obj调用,而是在前面定义
var fun = obj.b;
的时候另起一个地址存放了这个方法,将这个fun注册在Window上面,此时fun已经脱离了obj
上面的过程相当于
let fun = function () {
alert(this.a) // 此时this指向Window,Window里面没有a参数,所以为undefined
}
fun()
总结
考验一个人的细节问题!
本文地址:https://blog.csdn.net/qq_33933205/article/details/109237424