JavaScript ไม่ได้ให้วิธีการโคลนวัตถุโดยตรง ดังนั้นเมื่อวัตถุ B เปลี่ยนไปในรหัสต่อไปนี้วัตถุ A จะเปลี่ยนไป
A = {K1: 1, K2: 2, K3: 3};
b = a;
b.k2 = 4;
หากคุณเพียงต้องการเปลี่ยน B และรักษาค่าคงที่คุณต้องคัดลอกวัตถุ
ใช้ jQuery เพื่อคัดลอกวัตถุ
เมื่อสามารถใช้ jQuery วิธีขยายของ jQuery ของตัวเองสามารถใช้ในการใช้การคัดลอกวัตถุ
A = {K1: 1, K2: 2, K3: 3};
b = {};
$ .Extend (B, A);
ปรับแต่งวิธีการ clone () เพื่อใช้การคัดลอกวัตถุ
วิธีการต่อไปนี้เป็นแนวคิดพื้นฐานของการคัดลอกวัตถุ
Object.prototype.clone = function () {var copy = (อาร์เรย์อินสแตนซ์นี้)? - สำหรับ (attr ในนี้) {ถ้า (! obj.hasownproperty (attr)) ดำเนินการต่อ; คัดลอก [attr] = (typeof this [i] == "Object")? obj [attr] .clone (): obj [attr]; } return copy;}; a = {k1: 1, k2: 2, k3: 3}; b = a.clone ();ตัวอย่างต่อไปนี้ครอบคลุมมากขึ้นและเหมาะสำหรับการคัดลอกวัตถุส่วนใหญ่อย่างลึกซึ้ง
ฟังก์ชั่นโคลน (obj) {// จัดการ 3 ประเภทง่าย ๆ และเป็นโมฆะหรือไม่ได้กำหนดถ้า (null == obj || "object"! = typeof obj) ส่งคืน obj; // จัดการวันที่ถ้า (OBJ อินสแตนซ์วันที่) {var copy = new Date (); Copy.Settime (obj.getTime ()); ส่งคืนสำเนา; } // จัดการอาร์เรย์ถ้า (อาร์เรย์ OBJ อินสแตนซ์) {var copy = []; สำหรับ (var i = 0, var len = obj.length; i <len; ++ i) {copy [i] = clone (obj [i]); } ส่งคืนสำเนา; } // จัดการวัตถุถ้า (OBJ instanceof object) {var copy = {}; สำหรับ (var attr ใน obj) {ถ้า (obj.hasownproperty (attr)) คัดลอก [attr] = clone (obj [attr]); } ส่งคืนสำเนา; } โยนข้อผิดพลาดใหม่ ("ไม่สามารถคัดลอก OBJ! ประเภทของมันไม่ได้รับการสนับสนุน");}บทความข้างต้นความเข้าใจในเชิงลึกเกี่ยวกับการคัดลอกวัตถุ (object clone) ใน JavaScript เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น