ניתוק משתנה מאובייקט המקור - js
-
שלום וברכה
כמשימים אובייקט במשתנה ומשנם אחרי כן את ערכי הצאצאים שלו באמצעות המשתנה, השינוי מופיע גם באובייקט המקור,
איך מנתקים?דוגמא לקוד:
var obg = {}; obg.data = { key1: 'value', key2: 'value' } var d = obg.data; d.key1 = "any value"; console.log(obg.data.key1);//any value -
שלום וברכה
כמשימים אובייקט במשתנה ומשנם אחרי כן את ערכי הצאצאים שלו באמצעות המשתנה, השינוי מופיע גם באובייקט המקור,
איך מנתקים?דוגמא לקוד:
var obg = {}; obg.data = { key1: 'value', key2: 'value' } var d = obg.data; d.key1 = "any value"; console.log(obg.data.key1);//any value@ש-ב-ח
מעתיקים את האובייקט
יש שני אפשרויות, אפשר לעשות העתקה רקורסיבי לכל תתי האובייקטים (זה נקרא deep clone) או להעתיק רק את הרמה העליונה (shallow clone).var obj = { key1: {a: 1, b: 2}, key2: 'xyz' }; // no clone var obj2 = obj obj2.key1.a = 3 obj2.key2 = 'abc' console.log(obj); // {key1:{a:3,b:2},key2:'abc'} // shallow clone var obj3 = Object.assign({}, obj); // או var obj3 = {...obj} // או const _ = require('lodash') var obj3 = _.clone(obj) obj3.key1.a = 3 obj3.key2 = 'abc' console.log(obj); // {key1:{a:3,b:2},key2:'xyz'} // deep clone var obj4 = JSON.parse(JSON.stringify(obj)) // או const _ = require('lodash') var obj4 = _.cloneDeep(obg.data) obj4.key1.a = 3 obj4.key2 = 'abc' console.log(obj); // {key1:{a:1,b:2},key2:'xyz'}(נ.ב. ייתכנו הבדלים דקים בין האפשרויות שאני מביא... והנחתי לאחרים מקום להעיר...)
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות