01. 作用域与this
inner = 'window';
function say() {
console.log(inner);
console.log(this.inner);
}
var obj1 = (function() {
var inner = '1-1';
return {
inner: '1-2',
say: function() {
console.log(inner);
console.log(this.inner);
}
}
})();
var obj2 = (function() {
var inner = '2-1';
return {
inner: '2-2',
say: function() {
console.log(inner);
console.log(this.inner);
}
}
})();
say();
obj1.say();
obj2.say();
obj1.say = say;
obj1.say();
obj1.say = obj2.say;
obj1.say();
输出结果
say(); window window
obj1.say(); 1-1 1-2
obj2.say(); 2-1 2-2
obj1.say = say;
obj1.say(); window 1-2
obj1.say = obj2.say;
obj1.say(); 2-1 1-2
02.bind与箭头函数的this
const obj1 = {
a: 1,
func: () => {
console.log(this, this.a)
}
}
const obj2 = {
a: 2
}
obj1.func.bind(obj2)()
输出结果
window
undefined