您好,欢迎来到尚港娱乐。
搜索
您的当前位置:首页JavaScript中变量的相互引用_javascript技巧

JavaScript中变量的相互引用_javascript技巧

来源:尚港娱乐


测试如下:



function $id(elem){return document.getElementById(elem);} var my_select=$id("my_show_select"); var my_textarea=$id("my_show_textarea"); var my_button=$id("my_show_button"); my_select.onchange=function(){ var value=this.value; var array=[]; switch(value){ case '1': array.push('var a=b=[1,2]'); array.push('a.push(3)'); array.push("alert(a.length+' : '+b.length)"); break; case '2': array.push("var a=b=new Object()"); array.push("a.show=function(){alert('a: I am a')};"); array.push("b.show=function(){alert('b: I am b')}"); array.push("a.show(); b.show()"); array.push("alert('事实上我调用了两个不同函数')"); break; case '3': array.push("var a=function(){alert('a说:函数本身并不具有相互引用特性,虽然他也是Function的实例');}"); array.push("var c=new a();"); array.push("var b=c;"); array.push("b.show=function(){alert('b: I am b');}"); array.push("c.show=function(){alert('c: I am c');}"); array.push("b.show();c.show()"); array.push("alert('事实上我调用了两个不同函数')"); break; case '4': array.push("var a=[1,2]"); array.push("var b=function(arg){\nvar c=arg;\nc.push(3);\nalert(c.length);}"); array.push("b(a);"); array.push("alert('事实上参数a在函数b中被修改了')"); } my_textarea.value=array.join(";\n"); }; my_button.onclick=function(){ eval(my_textarea.value); };

关于对节点对象操作产生的影响:

由于是函数是按值传递,所以在插入节点时,引用的是节点本身,而不是它的一个克隆,所以节点被转移了

如:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
最后一个是关于节点的移除的,本来以为用innerHTML=""来移除元素内容的话,在IE中会把创建的节点从内存中彻底消除,事实并非如此,而是产生了很奇怪的现象:

如:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

Copyright © 2019- stmgroup.cn 版权所有

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务