关于AS3的for in遍历Object对象的属性问题

var funcAry:Array=new Array();

funcAry.push(aFunc);
funcAry.push(bFunc);
funcAry.push(cFunc);

function aFunc(eO:Object){
        eO.aFuncExected=true;
        trace("aFunc()");
}
function bFunc(eO:Object){
        eO.bFuncExected=true;
        trace("bFunc()");
}
function cFunc(eO:Object){
        eO.cFuncExected=true;
        trace("cFunc()");
}

var originObject:Object=new Object();
var operationAry:Array=[2,1,0];

for(var k:int=0;k<operationAry.length;k++){
        funcAry[operationAry[k]](originObject);
}

for(var j in originObject){
    trace(j+":"+originObject[j])
}

/*为什么输出结果是
cFunc()
bFunc()
aFunc()
aFuncExected:true
cFuncExected:true
bFuncExected:true*/
//originObject中加入属性的顺序是cFuncExected,bFuncExected,aFuncExected,为什么用for in遍历时就输出成了aFuncExected,cFuncExected,bFuncExected
/*而不是:
cFunc()
bFunc()
aFunc()
cFuncExected:true
bFuncExected:true
aFuncExected:true*/


得到答案:

Object用数组访问符实际使用了哈希表。
哈希表会将每个索引(字符串)重新编码,这个编码对程序员是不可知的
最后输出的顺序按重新编码为准。

故for..in只能保证哈希表中的每个单位都被访问到。
而不能保证是按添加顺序被访问到

转载于:https://www.cnblogs.com/mengyusha/archive/2011/07/21/2112312.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sub ConvertExcelToPDF() ' 定义变量 Dim objFSO As Object Dim objFolder As Object Dim objFile As Object Dim objExcel As Object Dim objWorkbook As Object Dim objPDFPrinter As Object Dim strFolderPath As String Dim strFileName As String Dim strPDFFileName As String Dim i As Long ' 设置打印机为 Microsoft Print to PDF Set objPDFPrinter = CreateObject("WScript.Network") objPDFPrinter.SetDefaultPrinter "Microsoft Print to PDF" ' 设置文件夹路径 strFolderPath = Environ("USERPROFILE") & "\Desktop\1\" ' 创建文件系统对象 Set objFSO = CreateObject("Scripting.FileSystemObject") ' 获取文件夹对象 Set objFolder = objFSO.GetFolder(strFolderPath) ' 遍历文件夹下的所有 Excel 文件 For Each objFile In objFolder.Files If objFSO.GetExtensionName(objFile.Path) = "xlsx" Then ' 打开 Excel 文件 Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open(objFile.Path) ' 构造 PDF 文件名 strFileName = objFSO.GetFileName(objFile.Path) strPDFFileName = objFSO.BuildPath(objFolder.Path, objFSO.GetBaseName(strFileName)) & ".pdf" ' 将文件保存为 PDF 格式 objWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPDFFileName ' 关闭 Excel 文件 objWorkbook.Close False objExcel.Quit ' 显示正在处理的文件名 Application.StatusBar = "正在处理:" & strFileName ' 等待 1 秒,以便显示下一个文件名 Application.Wait Now + TimeValue("0:00:01") End If Next objFile ' 恢复状态栏 Application.StatusBar = False ' 释放对象 Set objFolder = Nothing Set objFile = Nothing Set objExcel = Nothing Set objWorkbook = Nothing Set objPDFPrinter = Nothing Set objFSO = NothingEnd Sub 使用用户窗体显示进度消息
06-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值