1.面试题1
var name = 'window';
var person = {
name: 'person',
sayName: function () {
console.log(this.name)
}
};
function sayName() {
var sss = person.sayName;
sss(); // window: 独立函数调用
person.sayNAme()// person: 隐式调用
(person.sayName)();// person: 隐式调用
(b = person.sayName)();// window: 赋值表达式(独立函数调用)
}
sayName();
2.面试题2
var person1 = {
name: 'person1',
fool: function () {
console.log(this.name)
},
foo2: () => console.log(this.name),
foo3: function () {
return function () {
console.log(this.name)
}
},
foo4: function () {
return () => {
console.log(this.name)
}
}
}
var person = { name: 'person2' }
person1.foo1();// person1(隐式绑定)
person1.foo1.call(person2);// person2(显示绑定优先级高于隐式绑定)
person1.foo2();//window (箭头函数不绑定作用域&#x