下列代码执行后结果是什么,分析原因
const obj1 = {
a:1,
func:() => {
console.log(this,this.a)
}
}
const obj2 = {
a:2
}
obj1.func.bind(obj2)()
此时输出结果为 window undefine
const obj1 = {
a: 1,
func: function fun() {
console.log(this,this.a)
}
}
const obj2 = {
a:2
}
obj1.func.bind(obj2)()
此时结果为{a :2} 2
这是因为第一个使用的是箭头函数,第二个为普通函数,箭头函数除被普通函数包裹的情况外this均指向window,但普通函数指向它的直接调用者。
这里解释一下obj1.func.bind(obj2)()
obj1.func 是调用obj1对象的func属性,
func.bind(obj2)()是把obj2绑定到func,
所以第一个程序的结果为window undefined
第二个程序结果为{a:2} 2