Skip to content

Files

Latest commit

e0dbf0b · Jun 28, 2019

History

History
39 lines (30 loc) · 1.17 KB

understand_this.md

File metadata and controls

39 lines (30 loc) · 1.17 KB

理解this

在开题之前,你必须明白的一条规律是this的值并不是由函数定义放在哪个对象里面决定的,而是函数执行时由谁唤起来决定的

比如:

var name = 'window name';
var obj = {
    name: 'call_me_R',
    sayHi: function() {
        console.log('Hello ' + this.name);
    }
};
obj.sayHi(); // Hello call_me_R
window.fn = obj.sayHi;
window.fn(); // Hello window name

问-当涉及到this关键字,箭头函数普通函数主要是不同是什么?

答:箭头函数按词法作用域来绑定它的上下文,所以this实际上会引用到原来的上下文。

问-严格模式下的this

答:看下下面的例子

(function() {
    "use strict";
    console.log(this); // undefined
})();
(function() {
    // 不使用严格模式
    console.log(this); // window
})();

this在严格模式下指向undefined。相对的,非严格模式下this指向全局变量window。大部分情况下,开发者使用this,并不希望它指向全局window对象。严格模式帮我们在使用this关键词时,尽量少做搬起石头砸自己脚的事情。