我将我的arrow函数分配给了外部变量,但我不明白为什么这是指``动物''构造函数。当我调用函数“ fun”时,它会打印出来 “动物,真实”。但是我认为它会显示“ Window,false”。
function Animal() {
this.sleep = () => {
console.log(this, this instanceof Animal)
}
}
let animal = new Animal();
animal.sleep(); // Animal, true
let fun = animal.sleep
fun = animal.sleep;
fun() // Animal, true -- why?
答案 0 :(得分:2)
箭头函数解析this
lexically,就像其他任何变量一样。这意味着this
的值不是 取决于函数如何被调用,而是取决于定义的方式/位置。 / p>
sleep
函数在Animal
构造函数中定义,该构造函数用new
调用。因此,this
将引用Animal
的新实例。