日期:2014-05-16  浏览次数:20456 次

如何返回一个引用值?像c++的语法那样。
我有一个数组:
例如如下的例子代码
function   CTest(iIndex){
        this.m_iIndex   =   iIndex;
}

var   aArray   =   new   Array();
aArray.push(new   CTest(0));
aArray.push(new   CTest(1));
aArray.push(new   CTest(2));
aArray.push(new   CTest(3));

现在我想写一个函数,返回aArray里的引用,希望通过修改返回值能直接修改到aArray   里元素的值,例如:
function   FindYou(iIndex){
          return   aArray[iIndex];
}

var   aTest   =   FindYou(1);
不过这里   aTest   是复制了一份   aArray里的对象,而不是aArray里的引用。
不知道js里有没有   引用的语法呢?   thx   thx

------解决方案--------------------
你问之前测试了么?
<script type= "text/javascript ">
function CTest(iIndex){
this.m_iIndex = iIndex;
}

var aArray = new Array();
aArray.push(new CTest(0));
aArray.push(new CTest(1));
aArray.push(new CTest(2));
aArray.push(new CTest(3));

//现在我想写一个函数,返回aArray里的引用,希望通过修改返回值能直接修改到aArray 里元素的值,例如:
function FindYou(iIndex){
return aArray[iIndex];
}

var aTest = FindYou(1);
alert(aArray[1].m_iIndex);
aTest.m_iIndex = "我不是1 ";
alert(aArray[1].m_iIndex);
</script>
------解决方案--------------------
js中没有引用和传值的概念,只有全局变量和局部变量,aArray为全局数组,
所以修改会影响
------解决方案--------------------
js中对于简单变量是值传递的,而对于函数数组等对象是引用传递的,如果你的typeof aArray[iIndex] 是个object,就可以改变该对象的值,如果是数值或者字符串就不行.
------解决方案--------------------
js里当然有引用的概念
var my=xxx;定义一个变量
这里是不是引用要看xxx是什么类型,比如boolean,number等类型就不是引用,而是赋值
如果是array,function等类型则就是引用
举个例子:
<script language= "javascript ">
//引用
var arr=[ "1 ", "2 ", "3 "];
var my=arr;
my[0]= "lihui ";
alert(arr);
//赋值
var i=0;
var my=i;
my=2;
alert(i);
</script>