【殿堂之路】P68页
原文引用:“我有一个对象,我想根据不同的情况对它进行一系列的操作,但是,有时需要所有的操作,有时又需要一部分的操作。那么,这个技巧,就能保证代码的高度重用性和简洁性”
1 //新建队列 2 var funcAry:Array = new Array(); 3 4 //将需要的操作步骤加入队列中 5 funcAry.push(aFunc); 6 funcAry.push(bFunc); 7 funcAry.push(cFunc); 8 9 //创建一个对象,在程序后面为它动态添加属性a,b,cFuncExected; 10 var originObject:Object = new Object(); 11 12 //funcAry[i]是遍历funcAry里的元素,每一次遍历都把对象originObject传到函数abcFunc 13 //当中,在函数中为对象originObject动态添加属性 14 15 for (var i:Number = 0; i<funcAry.length; i++) 16 { 17 funcAry[i](originObject); 18 } 19 20 //在上一个循环中,已经为originObject添加了属性,在这个循环里,把originObject的 21 //属性逐一输出 22 for (var j in originObject) 23 { 24 //j是根据属性名逐一输出,originObject[j]是属性名对应的属性值 25 trace(j + ":" +originObject[j] ); 26 } 27 28 //定义a,b,cFunc三个函数,e作为参数,接受类型为Object的对象 29 function aFunc(e:Object) 30 { 31 trace("aFunc"); 32 //动态添加属性aFuncExected,其值为:属性值1,下面的同理 33 e.aFuncExected = "属性值1"; 34 } 35 36 function bFunc(e:Object) 37 { 38 trace("bFunc"); 39 e.bFuncExected = "属性值2"; 40 41 } 42 43 function cFunc(e:Object) 44 { 45 trace("cFunc"); 46 e.cFuncExected = "属性值3"; 47 48 } 49 50 51 /*输出如下: 52 aFunc 53 bFunc 54 cFunc 55 aFuncExected:属性值1 56 cFuncExected:属性值3 57 bFuncExected:属性值2 58 */
我的心得:
我终于一句一句地把代码看懂了。为了理解这里面的每一句代码的意思,我终于改掉之前只看代码,不动手的坏习惯。这次的突破,让自己彻底明白代码的意思,为自己感到开心。同时对遍历数组,for...in的用法有了更深刻的理解。