es6的遍历器协议规定,部署了next方法的对象,就具备了遍历功能。
function iterator(array) {
var index = 0;
return {
next : function () {
return index < array.length ? {value: array[index++], done: false} :
{value: undefined, done: true};
}
}
}
es6的 for ...of允许直接访问对象的键值,不同于es5的for ...in访问对象的键名。
var each = function (array, callback) {
for (var i = 0; i <array.length; i++) {
callback.call(array[i], i, array[i]);
}
};
// var each = function (array, callback) {
// for (var i = 0,item; item = array[i++];) {
// callback.call(item, i, item); //注意下标问题
// }
// };
each([1,2,4], function (i, n) {
console.log(i, n);
});