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) + "|";
                    }都不行

解决方案 »

  1.   

    for (var o in arrError) {
                            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