javascript - 对象内部的 next(){} 是什么?

标签 javascript

在查看 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 简写形式。

在 es6 之前,它会被写成 next: function() {} 对于你自己的逻辑,你可以使用像 Babel 这样的编译器,或者只是写成

var obj = {
  foo: 1, 
  bar: function(){ 
    // return data here 
  }
}

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

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

关于javascript - 对象内部的 next(){} 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38369856/

相关文章:

javascript - 查找字符串中的数组值

javascript - 如何将简单的可迭代类从 JavaScript 重写为 TypeScript?

javascript - `while` 或 `for` 与 $http.get 循环

javascript - Angular.js - 表单验证会发出任何事件吗?

javascript - 在 jQuery 中单击按钮

javascript - 在 while 条件下 get 将无法正常工作

javascript - jsPDF 不适用于 Chrome,仅适用于 Firefox 和 Safari

javascript - 旋转木马 Bootstrap 上的过渡

javascript - 身份验证 header 无法正常工作 ajax 401 未经授权

javascript - 用于开发/生产环境的备用 grunt.js 任务