วิธีการ clone object ใน javascript ให้ไม่เป็น pointer (เมื่อ แก้ค่าในตัวลูกแล้วตัวแม่จะได้ไม่ถูกแก้ค่าตามไปด้วย) by

31
Jul
0

วิธีการ clone object ใน javascript ให้ไม่เป็น pointer (เมื่อ แก้ค่าในตัวลูกแล้วตัวแม่จะได้ไม่ถูกแก้ค่าตามไปด้วย)
มีอยู่ 2 วิธีด้วยกันคือ
1. เขียนฟังชั่นวนลูปทุก attribute ใน object ตัวต้นแบบแล้ว copy แต่ไส้ในสุดของ object ที่อยู่ใน type พื้นฐานเช่น int,string ไปใส่ใส object ตัวใหม่แล้ว return object ตัวใหม่ออกมา
2. วิธีนี้ง่ายมาก คือ การ encode object ตัวต้นแบบ แล้วก็ decode อีกรอบเพื่อให้ ได้แต่ค่าต่างๆใน object เท่านั้น ไม่สืบทอดคุณสมบัติอื่นๆด้วย

ตัวอย่างของข้อ 1
function clone(objOld){
var objNew = new Object();
for(var i in objOld){
if(typeof(objOld[i]) == ‘object’ || typeof(objOld[i]) == ‘array’){
objNew[i] = clone(objOld[i]);
}else{
objNew[i] = objOld[i];
}
}
return objNew;
}

a = {a:{a:{a:1,b:2},b:{a:1,b:2}},b{}};
b = clone(a);

ตัวอย่างของข้อ 2
a = {a:{a:{a:1,b:2},b:{a:1,b:2}},b{}};
b = JSON.parse(JSON.stringify(a));

เห็นไหม ข้อ 2 ง่ายกว่า เห็นๆไม่ต้องเขียน code เพิ่มเลย ที่สำคัญนะ ข้อ 2 เร็วกว่าด้วยนะ แต่ก็มีวิธีทำให้ข้อ 1 เร็วขึ้นนะไว้ต่อคราวหน้าละกันนะ

Enjoy this article?

Consider subscribing to our RSS feed!

ไม่มีความเห็น

ยังไม่มีความเห็น

ใส่ความเห็น

RSS feed for comments on this post

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน