JavaScript لا يوفر مباشرة طرق استنساخ الكائن. لذلك ، عندما يتم تغيير الكائن B في الكود التالي ، يتم تغيير الكائن A.
a = {k1: 1 ، k2: 2 ، k3: 3} ؛
ب = أ ؛
B.K2 = 4 ؛
إذا كنت ترغب فقط في تغيير B والحفاظ على ثابت ، فأنت بحاجة إلى نسخ الكائن A.
استخدم jQuery لنسخ الكائنات
عندما يمكن استخدام jQuery ، يمكن استخدام طريقة تمديد JQuery لتنفيذ نسخ الكائنات.
a = {k1: 1 ، k2: 2 ، k3: 3} ؛
ب = {} ؛
$ .extend (b ، a) ؛
تخصيص طريقة clone () لتنفيذ نسخ الكائنات
الطريقة التالية هي الفكرة الأساسية لنسخ الكائن.
Object.prototype.clone = function () {var copy = (this extureof array)؟ []: {} ؛ لـ (attr in this) {if (! obj.hasownproperty (attr)) متابعة ؛ نسخ [attr] = (typeof this [i] == "Object")؟ obj [attr] .clone (): obj [attr] ؛ } نسخة الإرجاع ؛} ؛ a = {k1: 1 ، k2: 2 ، k3: 3} ؛ b = a.clone () ؛الأمثلة التالية أكثر شمولاً وهي مناسبة للنسخ العميق لمعظم الأشياء.
استنساخ الدالة (obj) {// التعامل مع الأنواع الثلاثة البسيطة ، و null أو غير محددة إذا (null == obj || "object"! = typeof obj) return obj ؛ // التعامل مع تاريخ IF (OBJ مثيل تاريخ) {var copy = new date () ؛ copy.settime (obj.getTime ()) ؛ نسخة إرجاع }. لـ (var i = 0 ، var len = obj.length ؛ i <len ؛ ++ i) {copy [i] = clone (obj [i]) ؛ } نسخة الإرجاع ؛ } // التعامل مع الكائن if (OBJ extryof Object) {var copy = {} ؛ لـ (var attr in obj) {if (obj.hasownproperty (attr)) نسخة [attr] = clone (obj [attr]) ؛ } نسخة الإرجاع ؛ } رمي خطأ جديد ("غير قادر على نسخ OBJ! نوعه غير مدعوم.") ؛}المقالة أعلاه الفهم المتعمق لنسخ الكائنات (استنساخ الكائن) في JavaScript هو كل المحتوى الذي أشاركه معك. آمل أن يعطيك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.