在使用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);
就是这样了,如果你的代码有一些特殊的需要,也许这个方法会有所帮助。