一个临时它并不像虽然你提出的代码很好,但我认为它看起来不错,不过,你必须做一些解决方法:
所有的
首先,想法是使清洁语法调用此函数,例如:
[5,4,3,2,1].list(a,b,c,d,e);
的想法是,A,B,C,d,e由参考修改。
由于变量作为值传递,只有对象按引用传递,变量a,b,c,d,e必须是对象。
var a=Object(),b=Object(),c=Object(),d=Object(),e=Object();
一旦它们是对象,你可以参照修改自己的价值(这里http://sirdarckcat.blogspot.com.ar/2007/07/passing-reference-to-javascript.html解释)
(function(val){if(val)this.valueOf=this.toSource=this.toString=function(){return val};return val;}).call(myVariable,'MyNewValue')
所以,它扩展了阵列中的“表格”功能包起来。原型,我结束了这一点:
Array.prototype.list = function(){
for(var i=0;i<this.length;i++){
(function(val){if(val)this.valueOf=this.toSource=this.toString=function(){return val};return val;}).call(arguments[i],this[i])
}
}
所以,当你调用[5,4,3,2,1].list(a,b,c,d,e);
你实际上是修改对象的引用(其结果将是一个对象太)。
下面是完整的工作代码:
<!DOCTYPE html>
<html>
<head><title>test</title>
<script type="text/javascript">
Array.prototype.list = function(){
for(var i=0;i<this.length;i++){
(function(val){if(val)this.valueOf=this.toSource=this.toString=function(){return val};return val;}).call(arguments[i],this[i])
}
}
</script>
</head>
<body>
<a id="test" href="#">test</a>
<script type="text/javascript">
var a=Object(),b=Object(),c=Object(),d=Object(),e=Object();
[5,4,3,2,1].list(a,b,c,d,e);
console.log(a,b,c,d,e);
</script>
</body>
</html>
看到这个答案:http://stackoverflow.com/a/3422473/218196 – 2012-03-24 14:47:39