this的指向

学习笔记JavaScript

普通函数 调用函数时使用的引用,决定了函数执行时刻的 this 值。

class C { showThis() { console.log(this); }}
var o = new C();var showThis = o.showThis;
showThis();// undefined
o.showThis(); // o

按照我们上面的方法,不难验证出:生成器函数、异步生成器函数和异步普通函数跟普通函数行为是一致的,异步箭头函数与箭头函数行为是一致的。

lexical:表示从上下文中找 this,这对应了箭头函数。 global:表示当 this 为 undefined 时,取全局对象,对应了普通函数。 strict:当严格模式时使用,this 严格按照调用时传入的值,可能为 null 或者 undefined。

我们可以用 strict 达成与上一节中方法的例子一样的效果:

"use strict"
function showThis(){
console.log(this);
}
var o = {
showThis: showThis
}
showThis(); // undefined
o.showThis(); // o