JavaScript-オブジェクトの参照
4225 ワード
基本タイプ(文字列、数字、ブール値、null、undefined):与えられた値は値のコピーだけです.
var a=5;
var b=a;
b+=5;
alert(b); //10
alert(a); //5
オブジェクトの種類と関数は、参照の関係であり、アドレスを共有します.var a=[1,2,3];
var b=a;
b.push(4);
alert(b); //1,2,3,4
alert(a); //1,2,3,4
もう一つの場合:var a=[1,2,3];
var b=a; //b a
b=[1,2,3,4]; //b
b.push(5);
alert(b); //1,2,3,4,5
alert(a); //1,2,3
var a=1;
var b=1;
alert(a==b); //true : true
var a=[1,2,3];
var b=[1,2,3];
alert(a==b); //false : ,
var a=[1,2,3];
var b=a;
alert(a==b); //true : ,
浅いコピー(浅いクローン):var obj1={
a:10 //
}
function copy(obj){
var newobj={};
for (var attr in obj) {
newobj[attr]=obj[attr];
}
return newobj;
}
var obj2=copy(obj1);
obj2.a=20;
alert(obj1.a); //10
コピー:var obj1={
a:{b:10} //
}
function deepCopy(obj){ //
if (typeof obj!= 'object') { //
return obj;
}
var newobj={};
for (var attr in obj) {
newobj[attr]=deepCopy(obj[attr]); //
}
return newobj;
}
var obj2=deepCopy(obj1);
obj2.a.b=20;
alert(obj1.a.b); //10