استدعاء مُنشئ الفصل بدون كلمة رئيسية جديدة في ES6
بالنظر إلى تعريف الفصل:
class Foo { constructor(x) { if (!(this instanceof Foo)) return new Foo(x); this.x = x; } hello() { return `hello ${this.x}`; } }
لا يمكن الاتصال مباشرة بمنشئ الفصل بدون الكلمة الأساسية الجديدة. وذلك لأن الفئات في ES6 لها بطبيعتها وظيفة منشئة يتم استدعاؤها عند استدعاء الفئة.
استدعاء فئة بدون جديد يؤدي إلى خطأ:
Cannot call a class as a function
تشير رسالة الخطأ هذه بوضوح إلى أنه لا يمكن استدعاء مُنشئ الفئة إلا باستخدام عامل التشغيل الجديد، وهو مطلوب لإنشاء مثيل جديد للفئة.
للتغلب على هذا القيد، فكر في الأساليب التالية :
function Foo(x) { this.x = x; this.hello = function() { return `hello ${this.x}`; } }
(new Foo("world")).hello(); // "hello world"
var FooWrapper = function(...args) { return new Foo(...args) }; FooWrapper("world").hello(); // "hello world"
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3