أحدث البرامج التعليمية وتطوير الشبكة
×

JS البرنامج التعليمي

JS الصفحة الرئيسية JS المقدمة JS ألى أين JS الناتج JS بناء الجملة JS البيانات JS تعليقات JS المتغيرات JS مشغلي JS علم الحساب JS مهمة JS أنواع البيانات JS وظائف JS الأجسام JS نطاق JS أحداث JS سلاسل JS طرق سلسلة JS أرقام JS طرق عدد JS الرياضيات JS التمور JS تاريخ تنسيقات JS تاريخ طرق JS المصفوفات JS طرق مجموعة JS القيم المنطقية JS مقارنات JS الظروف JS تحول JS حلقة غيرمنتهية For JS حلقة بينما JS استراحة JS نوع التحويل JS التعبير العادي JS أخطاء JS التصحيح JS الرفع JS الوضع الصارم JS دليل الاناقة JS أفضل الممارسات JS الأخطاء JS أداء JS الكلمات المحجوزة JS JSON

JS أشكال

أشكال التحقق من صحة API أشكال

JS موضوع

تعريفات الكائن خصائص الكائن طرق كائن نماذج الكائن

JS وظائف

تعاريف وظيفة وظيفة المعلمات وظيفة الاحتجاج الإغلاق وظيفة

JS HTML DOM

DOM مقدمة DOM أساليب DOM وثيقة DOM عناصر DOM HTML DOM CSS DOM الرسوم المتحركة DOM أحداث DOM EventListener DOM ملاحة DOM العقد DOM Nodelist

JS المتصفح BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS أمثلة

JS أمثلة JS HTML DOM JS HTML إدخال JS HTML الأجسام JS HTML أحداث JS المتصفح JS اختبار قصير JS ملخص

JS المراجع

JavaScript الأجسام HTML DOM الأجسام


 

JavaScript وظيفة الاحتجاج


ويمكن الاحتجاج بها وظائف JavaScript في 4 طرق مختلفة.

يختلف كل طريقة في كيفية this يتم تهيئة.


و this الكلمة

في جافا سكريبت، والشيء يسمى this ، هو الكائن الذي "يملك" القانون الحالي.

قيمة this ، عندما تستخدم في وظيفة، هو الكائن الذي "يملك" وظيفة.

لاحظ أن this ليس متغير. إنها الكلمة. لا يمكنك تغيير قيمة this .


استدعاء دالة جافا سكريبت

لقد تعلمت بالفعل أن رمز داخل دالة جافا سكريبت سيتم تنفيذ عندما "شيء ما" استدعاء ذلك.

لم يتم تنفيذ التعليمات البرمجية في وظيفة عند تعريف وظيفة. يتم تنفيذه عندما يتم استدعاء الدالة.

بعض الناس استخدام مصطلح "استدعاء وظيفة" بدلا من "استدعاء دالة".

ومن الشائع أيضا تماما القول "ندعو وظيفة"، "بداية وظيفة"، أو "تنفيذ وظيفة".

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


الاحتجاج وظيفة مثل وظيفة

مثال

function myFunction(a, b) {
    return a * b;
}
myFunction(10, 2);           // myFunction(10, 2) will return 20
انها محاولة لنفسك »

وظيفة أعلاه لا تنتمي إلى أي كائن. ولكن في جافا سكريبت هناك دائما كائن عالمي الافتراضي.

في HTML الكائن العالمي الافتراضي هو صفحة HTML نفسها، وبالتالي فإن وظيفة فوق "ينتمي" إلى صفحة HTML.

في مستعرض الكائن الصفحة هو نافذة المتصفح. وظيفة فوق يصبح تلقائيا وظيفة نافذة.

myFunction() و window.myFunction() هو نفس الوظيفة:

مثال

function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // window.myFunction(10, 2) will also return 20
انها محاولة لنفسك »

هذا هو وسيلة مشتركة لاستدعاء دالة جافا سكريبت، ولكن ليس ممارسة جيدة للغاية.
المتغيرات العالمية، والأساليب، أو وظائف يمكن بسهولة خلق الصراعات اسم والخلل في جسم العالمي.


كائن العالمية

عندما يتم استدعاء وظيفة دون وجود كائن مالك، وقيمة this يصبح الكائن العالمي.

في متصفح الإنترنت الكائن العالمي هو نافذة المتصفح.

هذا المثال بإرجاع كائن الإطار حيث بلغت قيمة this :

مثال

function myFunction() {
    return this;
}
myFunction();                // Will return the window object
انها محاولة لنفسك »

استدعاء وظيفة بوصفها وظيفة العالمية، يتسبب في قيمة this ليكون الهدف العالمي.
يمكن استخدام الكائن نافذة كمتغير تحطم بسهولة البرنامج.


الاحتجاج وظيفة مثل والطريقة

في جافا سكريبت يمكنك تحديد وظيفة وسائل الكائن.

المثال التالي بإنشاء كائن ( myObject )، مع خاصيتين ( firstName و lastName )، وطريقة ( fullName ):

مثال

var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObject.fullName();         // Will return "John Doe"
انها محاولة لنفسك »

و fullName الأسلوب هو وظيفة. وظيفة تنتمي إلى كائن. myObject هو صاحب وظيفة.

ودعا الشيء this ، هو الكائن الذي "يملك" شفرة جافا سكريبت. في هذه الحالة قيمة this هي myObject .

اختبار ذلك! تغيير fullName طريقة لإرجاع قيمة من this :

مثال

var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function () {
        return this;
    }
}
myObject.fullName();          // Will return [object Object] (the owner object)
انها محاولة لنفسك »

استدعاء وظيفة كطريقة كائن، يتسبب في قيمة this ليكون الهدف نفسه.


استدعاء دالة مع منشئ وظيفة

إذا سبقت الاحتجاج وظيفة مع new الكلمة، بل هو الاحتجاج المنشئ.

يبدو أنك خلق وظيفة جديدة، ولكن منذ وظائف جافا سكريبت هي كائنات فعلا قمت بإنشاء كائن جديد:

مثال

// This is a function constructor:
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName  = arg2;
}

// This creates a new object
var x = new myFunction("John","Doe");
x.firstName;                             // Will return "John"
انها محاولة لنفسك »

والاحتجاج منشئ بإنشاء كائن جديد. الكائن الجديد يرث الخصائص والأساليب من المنشئ الخاص به.

و this الكلمة في منشئ لا يكون لها قيمة.
قيمة this سوف يكون الهدف الجديد الذي عندما يتم استدعاء الدالة.


استدعاء دالة مع أسلوب وظيفة

في جافا سكريبت، وظائف هي كائنات. وظائف جافا سكريبت لها خصائص وأساليب.

call() و apply() هي محددة سلفا أساليب وظيفة جافا سكريبت. كلتا الطريقتين يمكن استخدامها لاستدعاء وظيفة، ويجب أن كلتا الطريقتين يكون كائن مالك كمعلمة الأولى.

مثال

function myFunction(a, b) {
    return a * b;
}
myObject = myFunction.call(myObject, 10, 2);     // Will return 20
انها محاولة لنفسك »

مثال

function myFunction(a, b) {
    return a * b;
}
myArray = [10, 2];
myObject = myFunction.apply(myObject, myArray);  // Will also return 20
انها محاولة لنفسك »

كلتا الطريقتين تأخذ كائن المالك كما الوسيطة الأولى. الفرق الوحيد هو أن call() يأخذ الحجج وظيفة على حدة، و apply() يأخذ الحجج وظيفة في صفيف.

في وضع الصارم جافا سكريبت، يصبح الوسيطة الأولى قيمة this في وظيفة الاحتجاج، حتى لو كانت الحجة ليست كائن.

في وضع "غير دقيق"، وإذا كانت قيمة الوسيطة الأولى هي فارغة أو غير محددة، يتم استبداله مع الكائن العالمي.

مع call() أو apply() يمكنك تعيين قيمة this ، واستدعاء وظيفة طريقة جديدة لكائن موجود.