一般来说,只有数组的输出形式是[... , ...]
要想让自己的Object也有这样的特点,就要继承数组,不过firebug很好欺骗,搞一个假数组就能蒙混过关了。
那怎么骗到它呢?
就是splice方法了,很关键,firebug觉得有splice就是数组,呵呵!
把任何function赋值给原型方法splice都行!
jQuery也是这么干的,有源码为证。
要想让自己的Object也有这样的特点,就要继承数组,不过firebug很好欺骗,搞一个假数组就能蒙混过关了。
那怎么骗到它呢?
就是splice方法了,很关键,firebug觉得有splice就是数组,呵呵!
把任何function赋值给原型方法splice都行!
jQuery也是这么干的,有源码为证。
简单的原理就是这样:
<div id="div1"></div>
<script>
function A(){
this[0] = 'Hello';
this[1] = 'World';
this[2] = document.body;
this[3] = document.getElementById("div1");
this.length = 4;
return this;
}
//这里很随意,是function都行,看看下面几个,任选一款:
A.prototype.splice = function(){}; //一般这样搞个空函数就行了
A.prototype.splice = window.moveTo; //想让人头晕,可以故意这样
A.prototype.splice = A; //无意义,节省代码而已
A.prototype.splice = [].splice; //jQuery是用的这一招,这也是一个不公开的jQuery方法,不详说了。
var a=new A();
console.debug(a);
</script>