在查看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
声明。
答案 0 :(得分:2)
next() {}
是es6短格式。
在pre es6中,它将被编写为next: function() {}
用于您自己的逻辑,您可以使用像Babel这样的编译器,或者只是将其写为
var obj = {
foo: 1,
bar: function(){
// return data here
}
}
基本上,对象可以包含其他对象,这些对象也可以是函数。当你绕过它时它非常强大。
编辑:格式化的答案,以获得更好的可怜
答案 1 :(得分:2)
回答简化问题:
首先,将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