我需要一个像这样工作的真正的迭代器:
我认为使用for(k in o)和一级续延将很容易解决这个问题,但JS没有这些功能。
编辑:我只能扫描haystackObj一次。
编辑2:我不是在寻找“遍历对象属性的方法”。我正在寻找一个对象属性的迭代器。这是一个巨大的区别。这个问题并不像乍一看那么简单。
var haystackObj = {
'needle': 'abc',
'prop2': {
'prop1': 'def',
'prop2': {
'needle': 'ghi',
},
'needle': 'jkl',
},
};
var needleKey = 'needle';
var iterator = {
next: function () {
/*
* WHAT CODE GOES HERE?
*
* Should return the next property, recursively, with the name
* equal to needleKey, of haystackObj.
*
*/
}
};
var value = iterator.next();
console.log(value); // -> 'abc'
value = iterator.next();
console.log(value); // -> 'ghi'
value = iterator.next();
console.log(value); // -> 'jkl'
我认为使用for(k in o)和一级续延将很容易解决这个问题,但JS没有这些功能。
编辑:我只能扫描haystackObj一次。
编辑2:我不是在寻找“遍历对象属性的方法”。我正在寻找一个对象属性的迭代器。这是一个巨大的区别。这个问题并不像乍一看那么简单。
for( var key in obj )
这个语法? - rlemon