`
yiyanwan77
  • 浏览: 183311 次
  • 性别: Icon_minigender_1
  • 来自: 威海
社区版块
存档分类
最新评论

javascript的传值和传址

阅读更多
类型  复制  传递  比较
数字  传值   传值   传值
 布尔    传值    传值    传值
 字符串  不可变   不可变    传值
 对象  传址  传址  传址

 

 

 

  • 对象在复制和比较中传址

 

function myObject(name){
    this.name=name;
    }
   var o1=new myObject("o1");

   var o2=o1;
   alert("o1.name="+o1.name);
   alert("o2.name="+o2.name);
   alert(o1==o2)
   o2.name="o2"
   alert("o1.name="+o1.name);
   alert("o2.name="+o2.name)
   alert(o1==o2)

 

结果为:

  1. o1
  2. o1
  3. true
  4. o2
  5. o2
  6. true

 

  • 对象在传递中传址

 

function myObject(name){
    this.name=name;
    }
var o1=new myObject("o1");

function changeName(o){
  o.name="o";
}
changeName(o1);
alert(o1.name);	

  

 结果为:

  1. o

 

例:

var a={};
		var b={}
		function create(){
			var text={"name":"text"};
			a.text=text;
			b.text=text;
			}
		create()
		alert(a.text.name);
		alert(b.text.name)

 

结果:

text,text

 

如果a对象修改了text.name的值,那么b中的text.name也会改变

var a={};
		var b={}
		function create(){
			var text={"name":"text"};
			a.text=text;
			b.text=text;
			}
		create()
		alert(a.text.name);
		a.text.name="a"
		alert(b.text.name)

 

结果为:

text,a

 

而对于普通变量情况则不一样

var a={};
		var b={}
		function create(){
			var text=10;
			a.text=text;
			b.text=text;
			}
		create()
		alert(a.text);
		a.text=15;
		alert(b.text)

 结果为:

10,10

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics