做蔚来笔试遇到的一个小问题:
代码
let obj = {
add1: function(){
this.log = true;
},
add2: ()=>{
this.state = true;
}
}
let son = {};
son.__proto__ = obj;
son.add1();
son.add2();
console.log(son.log);
console.log(son.state);
console.log(obj.log);
console.log(obj.state);
过程分析
执行了son.add1和add2这两个函数,执行add1时给son添加了log=true的属性,这个时候打印son.log的值就是true,add2的时候由于箭头函数的this是定义时绑定的外层代码块的this,故此处为window对象,因此打印window.state的值就为true,其他的都为undefined.
答案
true
undefined
undefined
undefined
这里复习了this的指针和js作用域的问题,参考: