Maison >interface Web >js tutoriel >Exemple de partage de code pour la référence et l'affectation d'objets JavaScript

Exemple de partage de code pour la référence et l'affectation d'objets JavaScript

黄舟
黄舟original
2017-03-17 15:19:171032parcourir

Cet article présente principalement la référence et l'affectation d'objets JavaScript, et analyse les compétences opérationnelles et les questions connexes de la référence et de l'affectation d'objets JavaScript sous forme d'exemples Notes , Les amis dans le besoin peuvent se référer à

Les exemples de cet article décrivent la référence et l'affectation des objets Javascript. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

<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>

Si vous souhaitez vraiment copier des objets sans s'affecter les uns les autres, vous devez copier vos méthodes et attributs.

Remarque : les sous-objets des objets sont également des références, donc lors du parcours de l'affectation, vous devez déterminer si le sous-élément est un objet. Si le sous-élément est un objet, continuez. parcourir les sous-éléments et attribuer des valeurs.

Méthode d'affectation des conversions :

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);
Résultat de sortie :

{a: 1, b: 2, c: 3, d: [0,1,2,3]}
{a: 1, b: 2, c: 3, d: [11,1,2,3], e: 4}
Aucune influence les uns sur les autres

Lorsque les références d'objet sont transmises en tant que paramètres de fonction, elles s'affecteront toujours les unes les autres. Rappelez-vous , comme le montre l'exemple suivant :

.
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));
Résultat de sortie :

{"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}

Après l'attribution de la référence d'objet, si l'objet est laissé vide, ils ne seront pas affectés les uns par les autres , comme suit :

var arr = {"a":"1","b":"2"};
var arr1 = arr;
arr = {};
arr["a"] = 2;
console.log(arr1);
console.log(arr);
Résultat de sortie :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn