Heim  >  Artikel  >  Web-Frontend  >  Beispielcode-Freigabe für JavaScript-Objektreferenz und -Zuweisung

Beispielcode-Freigabe für JavaScript-Objektreferenz und -Zuweisung

黄舟
黄舟Original
2017-03-17 15:19:17989Durchsuche

Dieser Artikel stellt hauptsächlich JavaScript-Objektreferenz und -Zuweisung vor und analysiert die Betriebsfähigkeiten und verwandten Themen der JavaScript-Objektreferenz und -Zuweisung in Form von Beispielen Notizen , Freunde in Not können sich darauf beziehen

Die Beispiele in diesem Artikel beschreiben die Referenzierung und Zuweisung von Javascript-Objekten. Geben Sie es als Referenz an alle weiter. Die Details lauten wie folgt:

<script type="text/javascript">
//例子一: 引用
var myArrayRef = new Array(0,1,2); //创建数组对象
var mySeconArrayRef = myArrayRef; // 对象复制.
myArrayRef[0] = 100; // 修改元素值
alert(mySeconArrayRef[0]);
/**
* 输出 100; 学过其它语言的都应该知道这里应该输出的是0 为什么输出的是100呢?
* 上面程序通过把myArrayRef对象复制给了mySeconArrayRef这时就存在了2个独立的 但最初值是相同的对象
* 因为是独立的为什么修改myArrayRef会对别一个对象有影响呢?大家都知道只有当他们引用的是同一个对象时这时修改一个才会
* 对别一个产生影响.但是在javascript语言中创建的对象myArrayRef值中其时保存的是对象的引用(也就是一个地址).
* 也就是 我用 new Array生成的保存在内存中而new Array把它所在的地方告诉了myArrayRef,myArrayRef又把这地址告诉了mySeconArrayRef
* 他们两个都指向的是new Array生成对象的地址而不是把对象保存在myArrayRef中,所以通过其中的一个去修改值时其时是修改他们同指象的那对象.
*/
alert(mySeconArrayRef[0] );
//例子二: 赋值
var myVa = &#39;ABC&#39;; //把ABC的值 赋予了myVa
var myVb = myVa; // myVa 赋值给 myVb
myVa = &#39;DEF&#39;; //修改myVa
/**
* 输出的是:ABC. 因为是把值保存在了变量了 而不是保存的是引用地址,所以他们两个是相对独立的整体.
*/
alert(myVb);
</script>

Wenn Sie Objekte wirklich kopieren möchten, ohne sich gegenseitig zu beeinflussen, müssen Sie Ihre Methoden und Attribute.

Hinweis: Die Unterobjekte von Objekten sind ebenfalls Referenzen. Wenn Sie also die Zuweisung durchlaufen, müssen Sie feststellen, ob das Unterelement ein Objekt ist. Fahren Sie fort mit Durchlaufen Sie die Unterelemente und weisen Sie Werte zu.

Konvertierungszuweisungsmethode:

var data = {a:1,b:2,c:3,d:[0,1,2,3]};
var str = JSON.stringify(data);
var data1 = $.parseJSON(str); //$为jQuery对象需要引入jQuery包
data1["e"] = 4;
data1["d"][0] = 11;
console.log(data);
console.log(data1);
Ausgabeergebnis:

{a: 1, b: 2, c: 3, d: [0,1,2,3]}
{a: 1, b: 2, c: 3, d: [11,1,2,3], e: 4}
Keine gegenseitige Beeinflussung

Wenn Objektreferenzen als Funktionsparameter übergeben werden, wirken sie sich immer noch gegenseitig aus: , wie im folgenden Beispiel gezeigt:

var data = {a:1,b:2,c:3,d:{q:4,w:5,e:6}};
var data1 = data;
function con(data2){
data2["r"] = 5;
console.log(JSON.stringify(data2));
}
con(data1);
console.log(JSON.stringify(data));
Ausgabeergebnis:

{"a":1,"b":2,"c":3,"d":{"q":4,"w":5,"e":6},"r":5}
{"a":1,"b":2,"c":3,"d":{"q":4,"w":5,"e":6},"r":5}

Wenn das Objekt nach der Objektreferenzzuweisung leer bleibt, werden sie sich nicht gegenseitig beeinflussen , wie folgt :

var arr = {"a":"1","b":"2"};
var arr1 = arr;
arr = {};
arr["a"] = 2;
console.log(arr1);
console.log(arr);
Ausgabeergebnis:

Das obige ist der detaillierte Inhalt vonBeispielcode-Freigabe für JavaScript-Objektreferenz und -Zuweisung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn