前端基础之代码结果篇

865 阅读1分钟

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