http://topic.csdn.net/u/20120130/15/37408a0d-ca2e-41fc-8144-45d0d0aa80df.html?seed=1837906126&r=77393289#r_77393289
参见这个问题简单的说来,
var arrError = [];
arrError["a"]=1;
arrError["x"]=0;
....... for (var o in arrError) {
str += o + "," + (arrError[o] ? 1 : 0) + "|";
}
一般情况这样是可以遍布字符串下标数组的,但是,有特殊情况,就是给array添加了新的原型扩展,比如让它有clear这样的函数。那么,用for in的方法,就会得到
第一个元素就是o="clear",arrError[o]就是arrError["clear"],这并不是我想要的数组元素,
那么,如何判断当前的o是函数,或者不是数组元素呢?
我试过的办法
for (var o in arrError) {
if (arrError.hasOwnProperty(o)) {
continue;
}
if (o.isPrototypeOf(Array)) {
continue;
}
str += o + "," + (arrError[o] ? 1 : 0) + "|";
}都不行
参见这个问题简单的说来,
var arrError = [];
arrError["a"]=1;
arrError["x"]=0;
....... for (var o in arrError) {
str += o + "," + (arrError[o] ? 1 : 0) + "|";
}
一般情况这样是可以遍布字符串下标数组的,但是,有特殊情况,就是给array添加了新的原型扩展,比如让它有clear这样的函数。那么,用for in的方法,就会得到
第一个元素就是o="clear",arrError[o]就是arrError["clear"],这并不是我想要的数组元素,
那么,如何判断当前的o是函数,或者不是数组元素呢?
我试过的办法
for (var o in arrError) {
if (arrError.hasOwnProperty(o)) {
continue;
}
if (o.isPrototypeOf(Array)) {
continue;
}
str += o + "," + (arrError[o] ? 1 : 0) + "|";
}都不行
if (isFunction(arrError[o])) {
alert("OK");
}
str += o + "," + (arrError[o] ? 1 : 0) + "|";
} function isFunction(obj){
return (typeof obj=='function')&&obj.constructor==Function;
} http://www.builder.com.cn/2008/0325/782690.shtml