class A {
printThis() {
console.log(this)
}
};
var a = new A().printThis;
a();//undefined
var B = {
printThis() {
console.log(this);
},
};
var b = B.printThis;
b();//window
我的理解是a()
等价于window.a()
,此时window为调用者,this指向window。但是实际指向了undefined
,而b方法却能正常指向window,这是为什么呢?
你在最前面加一个
"use strict"
试试(整段代码一起运行,不要分开运行)。class
中的代码是在严格模式下执行的补个参考链接:this -JavaScript | MDN