| 在使用JavaScript构建对象时,出于某种需求要使用prototype(原型定义)设计, 不过这种设计当中有一个讨厌的事情就是Array污染,比如这样定义: Array.prototype.foo='foo'; 这是一个典型的Array污染,因为所有的Array对象都会继承foo这个成员。这对于习惯用 for (var in []) 这样语法的是个灾难,虽然有方法可以避免,但是这个问题的麻烦还有很多。 现在介绍一种无污染的设计方法: 
function array(){};array.prototype=[];
 array.prototype.slice=function(){return this.length;}
 var a=new array;
 alert('array.slice():'+a.slice());
 alert('Array.slice():'+[1,2,3].slice(1));
 function object(){};
 object.prototype={};
 object.prototype.foo=function(){return this.name;}
 var o=new object;
 o.name='name from new object';
 alert('object.foo():'+o.foo());
 alert('{foo:"foo"}.foo:'+({foo:"foo"}).foo);
  如果你的代码有一些特殊的需要,也许这个方法会有所帮助。 |