تمرير وسائط لدوال JavaScript: تحقيق التفاعل في البرمجة
في عالم JavaScript، يُعتبر الـ “getter” جزءًا من ميزة اللغة لتحديد سلوك الوصول إلى الخصائص، وهو عملية تحدث تلقائيًا دون الحاجة إلى استدعاء الدالة. ومع ذلك، لا يمكن تمرير وسائط (arguments) مباشرة إلى getter، لأنه يعتبر كجزء من الوصول إلى الخصائص وليس كدالة قابلة للاستدعاء.
في الشيفرة التي قدمتها، يظهر أنك تحاول تعيين getter لخاصية href
في URIController
وتحاول تمرير url
كوسيط. ومع ذلك، يجب أن نفهم أن getter ليس دالة يمكن استدعاؤها بواسطة البرنامج، بل هو مكون من جزءين: الكلمة الرئيسية get
واسم الخاصية. هذا يعني أنك لا تقوم بفعل شيء يمكن تمريره إلى getter بطريقة تشابه استدعاء الدالة.
إذا كنت تحتاج إلى تمرير url
كوسيط إلى href
، يمكنك النظر في استخدام دالة بدلاً من getter، حيث يمكن تمرير الوسائط إلى الدالة بسهولة. لنقم بتعديل الشيفرة كالتالي:
javascriptvar URIController = {
href: function(url) {
return url.location.href;
}
};
// الاستخدام
var urlObject = /* افترض أنك حصلت على كائن url من مكان ما */;
var result = URIController.href(urlObject);
بهذه الطريقة، يمكنك تمرير urlObject
كوسيط إلى الدالة href
بسهولة. يمكنك أيضًا تحديث الـ getter إذا كنت بحاجة إلى استمرار استخدامه بتعديل الكود بمزيد من التفصيل.
المزيد من المعلومات
عندما نتحدث عن موضوع تمرير وسائط إلى getter في JavaScript، يجب أن نتناول بعض النقاط الهامة حول كيفية عمل getter وكيف يمكن تمرير الوسائط في هذا السياق.
في JavaScript، يُستخدم getter لتعريف طريقة الوصول إلى قيمة معينة في كائن دون الحاجة إلى استدعاء دالة. يتم ذلك باستخدام الكلمة الرئيسية get
مع اسم الخاصية. وفي حالة الكود الخاص بك:
javascriptvar URIController = {
get href() {
return url.location.href;
}
};
هنا، يُرجى ملاحظة أن الـ getter لا يأخذ وسيطًا مباشرة. إنه يتحول إلى دالة لكنها لا تستدعى بشكل صريح. بدلاً من ذلك، يتم استدعاءها عند محاولة الوصول إلى الخاصية href
، ويتم ذلك بدون استخدام أقواس الدالة ()
.
الآن، إذا كنت بحاجة إلى تمرير وسيط (مثل كائن url
) إلى الـ getter، يمكنك استخدام دالة بدلاً من getter:
javascriptvar URIController = {
href: function(url) {
return url.location.href;
}
};
هذا يسمح لك بتمرير url
كوسيط بشكل مباشر إلى الدالة href
. ويمكنك استخدامها كالتالي:
javascriptvar urlObject = /* افترض أنك حصلت على كائن url من مكان ما */;
var result = URIController.href(urlObject);
بهذه الطريقة، يمكنك الحصول على النتيجة المتوقعة باستخدام الدالة وتمرير الوسيط كمعامل لها.