:: اشتراك كانفا برو canva pro مدى الحياة (آخر رد :ضياء روحي)       :: # دورة إدارة الشراكات الاستراتيجية #5 يناير 2025م #اسطنبول#metc (آخر رد :جهاد سعيد)       :: # دورة أخصائي الإعلام الرقمي وشبكات التواصل الاجتماعي#29ديسمبر 2024م #دبي#metc (آخر رد :جهاد سعيد)       :: دورة اجراءات التوعية بالسلامة الكهربائية (آخر رد :بيسان احمد)       :: دورة الأداء المؤسسي وفقاً لمعايير الأوروبي efqm (آخر رد :AHMEDBBMF)       :: دورة التكنولوجيا المتقدمة لعمليات الصيانة (آخر رد :مصطفى فلفل)       :: دورة الإحتراف في إدارة الجودة|الجودة والإنتاج:مركزitr (آخر رد :منتجع التدريب)       :: دورة الرؤية الإستراتيجية لإدارة الموارد البشرية وقياس الأداء فى ظل منهجية الجودة الشا (آخر رد :منتجع التدريب)       :: دورة إدارة تكنولوجيا الأداء البشرى وجودة العمل|الموارد البشرية:مركزitr (آخر رد :منتجع التدريب)       :: دورة تصميم وتشغيل وصيانة الشبكات الكهربائية (آخر رد :AHMEDBBMF)      
اختر لونك:
وَقُلِ اعْمَلُوا فَسَيَرَى اللَّهُ عَمَلَكُمْ وَرَسُولُهُ وَالْمُؤْمِنُونَ ۖ وَسَتُرَدُّونَ إِلَىٰ عَالِمِ الْغَيْبِ وَالشَّهَادَةِ فَيُنَبِّئُكُم بِمَا كُنتُمْ تَعْمَلُونَ [ التوبة : ( 105 )] كلمة الإدارة

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

يُمنع كتابة مواضيع السحر والشعوذة والروحانيات والابراج بكافة الأشكال والمخالف سيعاقب بحظر مؤقت وإذا تكرر سيكون حظر دائم تنبيه هام جداً



أضف رد جديد
 
LinkBack أدوات الموضوع انواع عرض الموضوع

قديم 01-04-2019, 06:23 PM   #1
تاريخ التسجيل: Feb 2019
العمر: 38
المشاركات: 1,149
التقييم: 10
تاريخ التسجيل: Feb 2019
العمر: 38
المشاركات: 1,149
التقييم: 10
افتراضي مفهوم الدوال السهمية (Arrow Functions)

الدوال السهمية أو Arrow functions من بين المزايا الجديدة التي ظهرت في إصدار ECMAScript 2015 الحديث للغة البرمجة جافاسكريبت. وساهمت هذه الميزة منذ ذلك الحين في تغيير كبير لطريقة كتابة الدوال في مشاريع الجافاسكريبت.
نالت هذه الإضافة الجديدة استحسان معظم المطورين حول العالم، بحيث أننا لم نعد نرى كثيرا كلمة function عند إنشاء الدوال في الأكواد الحديثة.
طريقة كتابة مختصرة وسهلة

طريقة كتابة الدوال السهمية بسيطة ومختصرة مقارنة بالطريقة التقليدية، فالتعبير التالي :
const fn = function() { //... }
1
2
3

const fn = function() {
//...
}



يكافئ :
const fn = () => { //... }
1
2
3

const fn = () => {
//...
}



هذه الكتابة يمكن أن تُبسط أكثر، حيث يمكن حذف معقوفات الدالة إذا كانت الأخيرة تضم سطرا برمجيا واحدا فقط :
const fn = () => console.log("Test!")
1

const fn = () => console.log("Test!")



المعاملات يمكن تمريرها بين القوسين :
const fn = (arg1, arg2) => console.log(arg1, arg2)
1

const fn = (arg1, arg2) => console.log(arg1, arg2)



ويمكن حذف القوسين نهائيا إذا كانت الدالة تقبل معاملا واحدا فقط :
const fn = arg => console.log(arg)
1

const fn = arg => console.log(arg)



لاحظ كيف تم تبسيط الدوال في جافاسكريبت بفضل هذه الميزة الجديدة قد يبدو شكل هذه الدالة مربكاً في البداية، ولكن عند الإعتياد عليها سيزول هذا الإلتباس ويصبح هذا الكود واضح المعنى.
إرجاع ضمني بدون استخدام كلمة return

في الدوال السهمية يمكن القيام بعملية الإرجاع من دون الحاجة لاستخدام الكلمة المفتاحية return.
يمكن إرجاع القيمة في حال كان لدينا سطر واحد فقط بهذه الطريقة :
const fn = () => "Test" fn() //'Test'
1
2

const fn = () => "Test"
fn() //'Test'



في حالة أردنا إرجاع كائن من نوع JSON، يجب إحاطته بقوسين حتى لا يتم اعتبار معقوفتي الكائن على أنهما خاصتين بالدالة
const fn = () => ( {key: "Test"} ) fn() //{key: "Test"}
1
2

const fn = () => ( {key: "Test"} )
fn() //{key: "Test"}



الكائن this يعمل بشكل مختلف في الدوال السهمية

يعتبر الكائن this من أكثر المفاهيم استشكالا على مطوري الجافاسكريبت، حتى المحترفين منهم في أحيان كثيرة. هذا الكائن يعمل بعدة أشكال مختلفة بحسب السياق الذي تم فيه استخدامه.
من الجيد الإشارة إلى اختلاف الدوال السهمية في هذه الناحية عن الدوال التقليدية. الأخيرة عندما تكون بداخل كائن جافاسكريبت فإن this بداخلها يشير إلى الكائن الأب، الذي توجد بداخله الدالة التقليدية.
لنلاحظ هذا المثال :
مفهوم الدوال السهمية (Arrow Functions)
النتيجة هنا طبيعية بالنظر إلى أن this يشير إلى الكائن User الذي بدوره يتوفر على الخاصيتين firstName و lastName.
أما الدوال السهمية، فهي كما قلنا تعمل بشكل مختلف. لاحظوا هذا الكود :
مفهوم الدوال السهمية (Arrow Functions)
النتيجة هنا كما ترون هي “undefined undefined”، لأن الدوال السهمية ترث قيمة الكائن this من ما يعرف ب Context Execution أو سياق التنفيذ الخاص بها، وهو في حالتنا window أو null في حالة تم استخدام وضع “use strict“.
من هذا نستنتج أن الدوال السهمية لا تصلح لتكون وظائف (methods) بداخل Literal Objects في جافاسكريبت. كما أنه لا يمكن استخدامها ك Constructors كما نفعل مع الدوال التقليدية.
هناك حالة أخرى لا ينصح فيها باستخدام Arrow Functions، أتحدث هنا عن دوال الإرجاع Callbacks الخاصة بأحداث DOM.
أنظروا إلى المثالين الآتيين لتعرفوا السبب :
const link = document.querySelector('#link') link.addEventListener('click', () => { // this === window })
1
2
3
4

const link = document.querySelector('#link')
link.addEventListener('click', () => {
// this === window
})



const link = document.querySelector('#link') link.addEventListener('click', function() { // this === link })
1
2
3
4

const link = document.querySelector('#link')
link.addEventListener('click', function() {
// this === link
})



لاحظوا بأن this داخل دالة الإرجاع السهمية يشير إلى الكائن العام window. هذا غير مناسب لنا في هذه الحالة ولا يبدو منطقيا، فنحن عادة نحتاج في دالة الإرجاع لحدث معين أن يشير this إلى العنصر صاحب هذا الحدث، وهو في حالتنا العنصر link#. لهذا يجب دائما الإبتعاد عن الدوال السهمية في مثل هذه المواقف لأنها غير مجدية.

raheel غير متواجد حالياً   اقتباس
أضف رد جديد


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
الدوال المساعدة المخصصة Custom Helpers في Laravel 5 الفارس قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 1 26-07-2019 03:14 PM
30. دورة دوت نيت كور - الدوال والإجراءات | C# Functions and Procedures القيصر قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 13-05-2019 09:34 PM
تعرف علي مستقبل تصميم تطبيقات الجوال raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 11-04-2019 06:47 PM
طريقة توافق موقعك لأجهزة الجوال , وجعله Mobile friendly raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 14-03-2019 03:26 PM
طريقة تمكنك من جعل موقعك متوافق مع الجوال للمنتدى والووردبريس raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 14-03-2019 02:53 PM


الساعة الآن 05:33 AM

 


Content Relevant URLs by vBSEO ©2010, Crawlability, Inc.