Emad Saif نشر 17 يونيو 2022 أرسل تقرير نشر 17 يونيو 2022 لدي كائن يحتوي على تابعين method1 وmethod2 وأريد أن أقوم بإستدعاء التابع method2 من داخل method1، لذلك كتبت الكود التالي: var Obj = function(){ // ... } Obj.prototype.method1 = function(){ // ... method2(); // ... } Obj.prototype.method2 = function(){ console.log('execute method2'); } var o = new Obj(); o.method1(); لكن المشكلة هي عندما أقوم بتنفيذ الكود السابق يظهر لي الخطأ التالي: method2 is not defined ما سبب الخطأ هنا؟ وكيف أستدعي التابع method2 من داخل method1 بطريقة صحيح؟ 1 اقتباس
1 سامح أشرف نشر 17 يونيو 2022 أرسل تقرير نشر 17 يونيو 2022 سبب المشكلة لديك هو أن التابع method2 ليس دالة عامة global function وإنما هو تابع method ضمن الكائن Obj، وبتالي بإستدعائها، يجب أن تستخدم this، على النحو التالي: const Obj = function(){ // ... } Obj.prototype.method1 = function(){ // في هذا الجزء نُشير إلى التابع method2 // الموجود ضمن الكائن Obj // وبما أننا داخل تابع آخر ضمن نفس الكائن // فيجب أن نستخدم this للإشارة إلى الكائن الحالي this.method2(); } // هنا نضيف التابع method2 إلى الكائن Obj Obj.prototype.method2 = function(){ console.log('execute method2'); } const o = new Obj(); o.method1(); وستجد أن التابع method2 يتم إستدعائه بشكل سليم. 2 اقتباس
السؤال
Emad Saif
لدي كائن يحتوي على تابعين method1 وmethod2 وأريد أن أقوم بإستدعاء التابع method2 من داخل method1، لذلك كتبت الكود التالي:
لكن المشكلة هي عندما أقوم بتنفيذ الكود السابق يظهر لي الخطأ التالي:
method2 is not defined
ما سبب الخطأ هنا؟ وكيف أستدعي التابع method2 من داخل method1 بطريقة صحيح؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.