نريد أن نتيح هذا المشروع المفتوح المصدر إلى كل الناس حول العالم. من فضلك ساعدنا على ترجمة محتوى هذه السلسله للغة التى تعرفها.
الرجوع الي الدرس

إضافة الدالة المعدلة للدوال

أضف إلى النموذج الخاص بالدوال الدالة defer(ms)، والتى تقوم بإرجاع حاوى (wrapper) وتؤخر التنفيذ بعد ms مللى ثانية.

هاك مثال لكيفية استخدامها:

function f(a, b) {
  alert( a + b );
}

f.defer(1000)(1, 2); // تعرض 3 بعد ثانية واحدة

لاحظ أن المتغيرات يجب أن تُمرر إلى الدالة الأصلية.

Function.prototype.defer = function(ms) {
  let f = this;
  return function(...args) {
    setTimeout(() => f.apply(this, args), ms);
  }
};

// اختبر
function f(a, b) {
  alert( a + b );
}

f.defer(1000)(1, 2); // تعرض 3 بعد ثانية واحدة

لاحظ: استخدمنا this فى f.apply لتعمل مع دوال الكائنات.

ولذلك إذا تم استدعاء دالة كدالة كائن (method) فإن this سيتم تمرريرها إلى الدالة الأصلية f.

Function.prototype.defer = function(ms) {
  let f = this;
  return function(...args) {
    setTimeout(() => f.apply(this, args), ms);
  }
};

let user = {
  name: "John",
  sayHi() {
    alert(this.name);
  }
}

user.sayHi = user.sayHi.defer(1000);

user.sayHi();
Morty Proxy This is a proxified and sanitized view of the page, visit original site.