如果有类似这种情况,就是想在一个自定义的 Object 中设置很多个标志位,而且这些标志位往往是有规律的。比如像对 5 年中的 12 个月都设置一个标志位,如果这个月有任务,则标志为 1,否则为空。
常用写法:
- var flagObj:Object = new Object();
- if (第一年) {
- if(一月 == 任务月) {
- flagObj.f11 = "1";
- }
- if(二月 == 任务月) {
- flagObj.f12 = "1";
- }
- ...
- if(十二月 == 任务月) {
- flagObj.f112 = "1";
- }
- }
- ...
- if (第五年) {
- if(一月 == 任务月) {
- flagObj.f51 = "1";
- }
- if(二月 == 任务月) {
- flagObj.f52 = "1";
- }
- ...
- if(十二月 == 任务月) {
- flagObj.f512 = "1";
- }
- }
但是这样写,在这儿仅仅只有 5 年,如果是 50 年,可就毁了。所以必须有其它办法解决这种问题,于是就想到了动态给对象赋属性,这样以来,上面的问题也就是两个 for 循环的事儿,代码如下:
- for (var y:int=1; y<=5; y++) {
- for (var m:int=1; m<=12; m++) {
- if (任务月 == m) {
- // 设置对象动态属性
- var p:String = "f" + y.toString() + m.toString();
- flagObj[p] = "1";
- }
- }
- }
如果年份不定,可以把循环中的 5 设为变量,给个初值即可。这样一来,n 年也不是问题了。