请问构造函数中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的时候才是定义的时候吗?

阅读 2.5k
2 个回答

如楼上所说,箭头函数中,并没有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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏