请问构造函数中return一个新的对象,箭头函数的this为什么指向一个空对象呢?

请问构造函数中return一个新的对象,箭头函数的this为什么指向一个空对象呢?

function Person(){

var kk = {};

kk.num = 10;

kk.getValue = () => {

console.log(this)

}

return kk;

}

var p = new Person();

p.getValue()

// person {}

箭头函数的this不是定义的时候就确定吗?
这里定义的时候this应该指向person函数体吧,为什么会指向new的空对象呢
还是说new的时候才是定义的时候吗?


回答:

不存在什么时候定义一说,箭头函数仅仅只是不绑定this,也就在箭头函数内部不产生this
https://developer.mozilla.org...


回答:

如楼上所说,箭头函数中,并没有this,如果在箭头函数中,调用了this,其实会根据作用域向上查找this。
举个栗子

function Person(){

var kk = {};

kk.num = 10;

console.log(this.__proto__.constructor === Person)

const self = this

kk.getValue = () => {

console.log(this === self)

}

return kk;

}

var person = new Person() // -> true

person.getValue() // -> true

以上是 请问构造函数中return一个新的对象,箭头函数的this为什么指向一个空对象呢? 的全部内容, 来源链接: utcz.com/p/936854.html

回到顶部