什么是对象内部的下一个(){}

What is the next(){} inside object?

本文关键字:下一个 对象 内部 什么      更新时间:2023-09-26

在查看for-of循环时,我看到以下代码:

var iterable = {
  [Symbol.iterator]() { /* 1. I don't understand, will look later*/
    return {
      i: 0,
      next() { /* 2. New to me how next(){} is used inside object? */
        if (this.i < 3) {
          return { value: this.i++, done: false };
        }
        return { value: undefined, done: true };
      }
    };
  }
};
for (var value of iterable) {
  console.log(value);
}
// 0
// 1
// 2

为了简化我的问题,我试图用我自己的逻辑来理解,如下所示:

function bar(){
  return 1;
}
var obj = {foo: 1, bar(){}}
console.log(obj); /* I get nothing error, so this is good */
console.log(obj.bar()); 
/* Just trying to know if this works, but I get undefined*/ 

那么 func(){} 在对象文字中有什么用呢?我只在对象文字中看到property:value声明。

对象

中的next() {}是es6的简写形式。

在 pre es6 中,它将被编写为next: function() {}对于您自己的逻辑,您可以使用 Babel 等编译器或只是将其编写为

var obj = {
  foo: 1, 
  bar: function(){ 
    // return data here 
  }
}
本质上,对象

可以包含其他对象,这些对象也可以是函数。当你把头缠绕在它周围时,它非常强大。

编辑:格式化答案以提高可读性

回答您的简化问题:首先,您将bar定义为返回1的函数。然后在obj中将其定义为空白函数。当您在对象内部传递函数时,它会获取key作为该函数的函数名称和值。

下面的代码

var obj = {foo: 1, bar(){}}

等于

var bar = function() {}
var obj = {foo: 1, bar: bar}

但是,如果您这样做

var obj = {foo: 1,bar(){return 1}}
console.log(obj.bar()) //output will be 1