2014.9.6 关于js里for in,引用和js面向对象的应用

for...in 语句用于对数组或者对象的属性进行循环操作(转自自w3c),

语法:

for (变量 in 对象)
{
    在此执行代码
}

之前一直忽略这种很牛逼的控制符 今天碰到面向对象以后 发现js有“引用”这个特性以后 就好好恶补了一下。


关于js的引用特性

如下代码:

<script>
var arr1=[1,2,3];
var arr2=arr1;

arr2.push(4);

alert(arr1);
alert(arr2);
</script>
一个数组arr1赋值给arr2以后 对arr2数组进行push()方法来让数组末尾增加一个4,运行以后 无论是arr1还是arr2 alert出来的结果都是1,2,3,4


这就是js里的引用特性 ,这就好比一栋房子 A搬进去住了他挪了沙发 B搬进去住了 挪了电视机 最后你进去看房子 会发现电视机和沙发动了。


那如果不希望这个arr1改变的话 怎么解决呢?


这时候就用到了这个for in 遍历循环 代码如下:

<script>
var arr1=[1,2,3];
var arr2=[];
for(var i in arr1)
{
	arr2[i]=arr1[i];	
}
arr2.push(4);

alert(arr1);
alert(arr2);
</script>

运行以后arr1仍然是1,2,3 而arr2则变成了1234 for in遍历相当于把整个arr1复制了一遍 然后再传递给arr2 所以 此时的arr1也就完全不受影响了 (ps:各大公司在面试的时候经常会考引用)


js面向对象 

目前为止仍然一头雾水 只怪那个this太诡异..... 今天试用了一下把之前的一些面向过程的小程序改写成面向对象 各种bug各种飞 续更........(to be continued)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值