1 var o = { 2 forEach: function (callback) { 3 // alert(this.length); 4 for (var i = 0, len = this.length; i < len; i++) { 5 callback && callback(this[i], i, this); 6 } 7 }, 8 get length(){ 9 var sum=0;10 for(var n in this) {11 sum+=1;12 }13 return sum;14 }15 16 };17 Object.defineProperty(o,"length",{enumerable:false});18 Object.defineProperty(o,"forEach",{enumerable:false});19 o[0] = 0;20 o[1] = 1;21 o[2] = 2;22 23 o.forEach(function(v,i,arr){24 arr[i]=v+1;25 console.log(arr[i]+"callback");26 });
值得注意的是:
1.回调函数的使用
2.
defineProperty以及defineProperties函数的意义 这两个函数都可以定义对象属性的四大特性--值,可写性,可枚举性,可配置性