ننسى دائمًا استخدام هذين الأمرين واكتبهما لأسفل لإجراء سجل.
وظائفها متشابهة تمامًا ، لكن المعلمات التي تم تمريرها مختلفة
يتقدم
تطبيق يقبل معلمتين. أول واحد يضع إشارة إلى هذا الكائن في جسم الوظيفة ، والثاني هو مجموعة مع انتشار (يمكن اجتياز الكائن). تمرر طريقة التطبيق العناصر في هذه المجموعة كمعلمات للدالة المدعو:
var func = function (a ، c ، c) {Alert ([a ، b ، c]) ؛ // Budap1،2،3/2010unc.apply(null ، [1،2،3]) ؛يتصل
لا يتم إصلاح المعلمات التي تم تمريرها في المكالمة. نفس التطبيق هو أن المعلمة الأولى تمثل أيضًا هذه الإشارة في جسم الوظيفة. بعد بدء المعلمة الثانية ، يتم تمرير كل معلمة في الوظيفة بالتسلسل:
var func = function (a ، b ، c) {Alert ([a ، b ، c]) ؛ // Budap1،2،3/2010funcall(null ، 1،2،3) ؛المكالمة هي السكر النحوي من الهراء. إذا كانت المعلمة الأولى فارغة ، فإن هذا في جسم الوظيفة يشير إلى كائن المضيف ، وهو نافذة في المتصفح.
استخدامات المكالمة والتطبيق
1. تغيير هذه النقطة
المثال أعلاه هو
2. Function.prototype.bind
محاكاة الوظيفة. النموذج
function.prototype.bind = function (context) {var self = this ؛ Return Function () {return self.apply (السياق ، الوسائط) ؛ }} ؛ var obj = {name: 'cxs'} ؛ var func = function () {Alert (this.name) ؛ // cxs} .bind (obj) ؛ fun () ؛