jQuery 3.3

jQuery.extend()




jquery

jQuery.extend (الهدف [، object1] [، objectN]) إرجاع: Object

الوصف ؛: دمج محتويات اثنين أو أكثر من الكائنات معا في الكائن الأول.

  • الإصدار المضاف: 1.0 jQuery.extend (الهدف [، الكائن 1] [، objectN])

    • استهداف
      النوع: Object
      كائن سيتلقى الخصائص الجديدة إذا تم تمرير كائنات إضافية أو تمدد مساحة الاسم jQuery إذا كانت هي الوسيطة الوحيدة.
    • object1
      النوع: Object
      كائن يحتوي على خصائص إضافية للدمج فيها.
    • objectN
      النوع: Object
      كائنات إضافية تحتوي على خصائص للدمج فيها.
  • الإصدار: 1.1.4 jQuery.extend ([عميق] ، هدف ، object1 [، objectN])

    • عميق
      اكتب: Boolean
      إذا كان صحيحًا ، فسيصبح الدمج عوديًا (ويعرف أيضًا باسم النسخة العميقة). تمرير false لهذه الوسيطة غير مدعوم.
    • استهداف
      النوع: Object
      وجوه لتمديد. سوف تتلقى خصائص جديدة.
    • object1
      النوع: Object
      كائن يحتوي على خصائص إضافية للدمج فيها.
    • objectN
      النوع: Object
      كائنات إضافية تحتوي على خصائص للدمج فيها.

عند تقديم $.extend() أو أكثر من العناصر إلى $.extend() ، تتم إضافة خصائص من كافة الكائنات إلى الكائن الهدف. يتم تجاهل الوسيطات التي تكون null أو undefined .

إذا تم توفير وسيطة واحدة فقط إلى $.extend() ، فهذا يعني حذف الوسيطة المستهدفة. في هذه الحالة ، يفترض أن يكون الكائن jQuery نفسه هو الهدف. من خلال القيام بذلك ، يمكنك إضافة وظائف جديدة لمساحة الاسم jQuery. هذا يمكن أن يكون مفيدا للمؤلفين المساعد الذين يرغبون في إضافة أساليب جديدة إلى JQuery.

ضع في اعتبارك أنه سيتم تعديل الكائن الهدف (الوسيطة الأولى) كما سيتم إرجاعه من $.extend() . ومع ذلك ، إذا كنت تريد الاحتفاظ بكلا من الكائنات الأصلية ، فيمكنك إجراء ذلك بتمرير كائن فارغ كهدف:

var object = $.extend({}, object1, object2);

الدمج الذي يقوم به $.extend() غير متكرر بشكل افتراضي؛ إذا كانت خاصية الكائن الأول هي نفسها كائن أو صفيف ، فسيتم الكتابة فوقه بشكل كامل بواسطة خاصية لها نفس المفتاح في الكائن الثاني أو اللاحق. لا يتم دمج القيم. ويمكن ملاحظة ذلك في المثال التالي من خلال فحص قيمة الموز. ومع ذلك ، عن طريق تمرير true لوسيطة الدالة الأولى ، سيتم دمج الكائنات بشكل متكرر.

تحذير : تمرير false للوسيطة الأولى غير معتمد.

لا يتم نسخ الخصائص غير المعرفة. ومع ذلك ، سيتم نسخ الخصائص الموروثة من النموذج الأولي للكائن. لا يتم إعادة إنشاء الخصائص التي هي كائن تم إنشاؤه عبر new MyCustomObject(args) أو أنواع جافا سكريبت المضمنة مثل Date أو RegExp وستظهر ككائنات عادية في الكائن أو الصفيف الناتج.

على امتداد deep ، يتم توسيع كائن و صفيف ، لكن أغلفة الكائنات على الأنواع البدائية مثل String و Boolean و Number ليست كذلك. توسيع بنية البيانات الدورية بشكل عميق سوف ينتج عنه خطأ.

بالنسبة للاحتياجات التي تقع خارج هذا السلوك ، اكتب طريقة تمديد مخصصة بدلاً من ذلك ، أو استخدم مكتبة مثل lodash .

أمثلة:

دمج كائنين ، وتعديل الأول.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery.extend demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div id="log"></div>
 
<script>
var object1 = {
  apple: 0,
  banana: { weight: 52, price: 100 },
  cherry: 97
};
var object2 = {
  banana: { price: 200 },
  durian: 100
};
 
// Merge object2 into object1
$.extend( object1, object2 );
 
// Assuming JSON.stringify - not available in IE<8
$( "#log" ).append( JSON.stringify( object1 ) );
</script>
 
</body>
</html>

عرض:

دمج كائنين بشكل متكرر ، وتعديل الأول.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery.extend demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div id="log"></div>
 
<script>
var object1 = {
  apple: 0,
  banana: { weight: 52, price: 100 },
  cherry: 97
};
var object2 = {
  banana: { price: 200 },
  durian: 100
};
 
// Merge object2 into object1, recursively
$.extend( true, object1, object2 );
 
// Assuming JSON.stringify - not available in IE<8
$( "#log" ).append( JSON.stringify( object1 ) );
</script>
 
</body>
</html>

عرض:

دمج الافتراضات والخيارات ، دون تعديل الإعدادات الافتراضية. هذا هو نمط تطوير البرنامج المساعد المشتركة.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery.extend demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div id="log"></div>
 
<script>
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
 
// Merge defaults and options, without modifying defaults
var settings = $.extend( {}, defaults, options );
 
// Assuming JSON.stringify - not available in IE<8
$( "#log" ).append( "<div><b>defaults -- </b>" + JSON.stringify( defaults ) + "</div>" );
$( "#log" ).append( "<div><b>options -- </b>" + JSON.stringify( options ) + "</div>" );
$( "#log" ).append( "<div><b>settings -- </b>" + JSON.stringify( settings ) + "</div>" );
</script>
 
</body>
</html>

عرض: