如何理解一下代码中的this 指向

题目来源及自己的思路

http://es6.ruanyifeng.com/#do... 介绍中的一段代码

相关代码

function* objectEntries() {
  let propKeys = Object.keys(this);

  for (let propKey of propKeys) {
    yield [propKey, this[propKey]];
  }
}

let jane = { first: 'Jane', last: 'Doe' };

jane[Symbol.iterator] = objectEntries;

for (let [key, value] of jane) {
  console.log(`${key}: ${value}`);
}

你期待的结果是什么?实际看到的错误信息又是什么?

以上代码中,this 最终指向到了jane,如何理解?### 题目描述

阅读 2k
3 个回答

objectEntries函数等同于这样

let jane = { 
  first: 'Jane', 
  last: 'Doe',
  *[Symbol.iterator](){
       let propKeys = Object.keys(this);
       for (let propKey of propKeys) {
          yield [propKey, this[propKey]];
        }
  }
};

for (let [key, value] of jane) {
  console.log(`${key}: ${value}`);
}

for..of对jane进行遍历的时候,调用了jane对象的iterator,所以this指向jane对象

函数作为对象里的方法被调用时,它们的 this 是调用该函数的对象。
参考: this关键字

在函数中的this,谁调用这个函数就指谁

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题