没有办法,因为JS的参数全是传值方式,
具体而言是这样:对于值类型,复制值;对于引用类型,复制引用的值。
而赋值又是这样的:
JS里的变量均视同一 引用/指针,它们是保存于内存中的,JS里的赋值是改变该引用本身的值,引用指向的对象是不变的,即只改变了引用本身所占的那几个字节的内容,所以,你在函数内赋值虽然影响到参数(但这个参数与你传的变量其实是两个不同的引用,只是引用相同对象),但对于函数外的变量而言,既没影响到变量本身,也没影响到其引用的对象。总之,要完全实现你这样的写法是不可能的,不过,有一种变通之道
具体而言是这样:对于值类型,复制值;对于引用类型,复制引用的值。
而赋值又是这样的:
JS里的变量均视同一 引用/指针,它们是保存于内存中的,JS里的赋值是改变该引用本身的值,引用指向的对象是不变的,即只改变了引用本身所占的那几个字节的内容,所以,你在函数内赋值虽然影响到参数(但这个参数与你传的变量其实是两个不同的引用,只是引用相同对象),但对于函数外的变量而言,既没影响到变量本身,也没影响到其引用的对象。总之,要完全实现你这样的写法是不可能的,不过,有一种变通之道
解决方案 »
- JS控制DIV中的ID值
- 有懂java script的请进!!! 小弟跪迎!!!
- setAttribute添加属性没反应
- 请问用javascript怎样去判断文本框中输入的是小数
- insertRow()方法,在javascirpt哪个对象中能找到
- 痛苦中......跪求jsp+javascript级联菜单
- 100分!高分求解,关于控件下载!!(解决另赠200分)
- 关于Date对象
- 如何用JAVASCRIPT来做判断用户登录正确或错误的弹出窗口...大家帮帮忙
- Extjs4.1 numberfield控件spindown不响应
- 谁能帮我改一下这个简单JS的树型菜单(我不会JS),马上给分(在线等待)
- 有没有办法在另一个页面插入代码
<SCRIPT LANGUAGE="JavaScript">
<!--
var b = [];
var c = [];
var a=["语文","数学"];
Array.prototype.list = function(fn){
for (var i=0;i<this.length;i++){
arguments[i][arguments[i].length] = this[i];
}
}
a.list(b,c);
alert(b);
alert(c);
//-->
</SCRIPT>期待看看其他人的方法吧!
var a=["语文","数学"]
Array.prototype.list=function(){
for (var i=0;i<this.length ;i++ )
{
arguments[i].push (this[i]);
}
}
var b =[]
c = [];
a.list(b,c);
alert(b);
</script>这样的话,还是数组。等于说写这个函数没啥意义了,反而又增加了麻烦程度。<script>
var a=["语文","数学"]
Array.prototype.list=function(){
for (var i=0;i<this.length ;i++ )
{
arguments[i].text = this[i];
}
}
var b = c = new Object;
a.list(b,c);
alert([c.text, b.text]);
</script>
这是用对像来实现。也感觉够麻烦