本文介绍如何在JavaScript中动态获取未知对象的属性。通过for...in循环遍历对象,区分方法与数据属性,并展示关联数组的创建与访问方式,帮助开发者灵活处理Ajax等场景下的对象信息。
动态获取Ajax对象属性
在尝试编写AjaxToolkit:AsyncFileUpload的Demo时,可以利用其OnClientUploadComplete属性来关联客户端JavaScript。例如,可以设置OnClientUploadComplete="uploadComplete",并定义相应的uploadComplete方法。
具体实现代码如下:
function uploadComplete(sender, e) {
//在此处执行相关操作...
} 那么,如何从参数e中获取上传文件的相关信息呢?除了查阅AjaxControlToolkit的源代码外,还可以使用JavaScript代码进行动态提取。
具体代码如下:
function uploadComplete(sender, e) {
var ret = "Properties:\n";
for (var prop in e) {
var val = e[prop];
if (typeof (val) === "function") {
ret += (prop + "()");
}
} else {
ret += prop + ": " + val;
}
ret += ";\n";
}
alert(ret);
} 运行结果如下:

通过这种方式,可以清晰地查看对象的所有属性。
理解JavaScript关联数组
这里利用了JavaScript中“关联数组”的概念。在JS中,对象的属性(包括方法,也可视为一种属性)都存储在它的关联数组中,通过for...in...语句即可遍历这些属性。
关于关联数组的使用,可以参考以下示例:
具体代码如下:
var dog = new Object();
dog.id = 1;
dog["name"] = "Gougou";
alert("id: " + dog["id"] + ", name" + dog.name);最终输出结果为:"id: 1, name: Gougou"
本文系原创,转载请注明:来自 Freeway —— cnBlogs