من المريح للغاية استخدام طريقة إعادة تحميل الطريقة في .NET. هل يمكنني أيضًا القيام بذلك في JavaScript؟
في Javasciprt ، لا توجد وظيفة لطريقة التحميل الزائد. في الماضي ، ربما يكون الكثير من الناس قد فعلوا ذلك عن طريق تمرير المعلمات بشكل مباشر ثم تحديد كيفية التعامل معها بناءً على ما إذا كانت المعلمات "غير محددة" وغير محددة ، وذلك لتحقيق وظائف التحميل المماثل بشكل زائد.
على سبيل المثال:
نسخة الكود كما يلي:
var showmessage = function (name ، value ، id) {
if (id! = "undefined") {
التنبيه (الاسم+القيمة+المعرف) ؛
}
آخر إذا (القيمة! = "غير محدد") {
التنبيه (الاسم + القيمة) ؛
}
آخر{
تنبيه (اسم) ؛
}
}
Showmessage ("هاها") ؛
Showmessage ("haha" ، "؟؟") ؛
ShowMessage ("Haha" ، "؟؟" ، 124124) ؛
لقد رأيت اليوم مقالًا عن Ajaxian حول كتابة الحمل الزائد لـ JavaScript ، والذي يمكن تنفيذه من خلال طريقة أخرى.
ألق نظرة على هذا الرمز:
نسخة الكود كما يلي:
// addmethod - بقلم جون ريج (معهد ماساتشوستس للتكنولوجيا المرخص)
وظيفة AddMethod (كائن ، الاسم ، fn) {
var old = object [name] ؛
كائن [name] = function () {
if (fn.length == ediuments.length) {
إرجاع fn.apply (هذا ، الحجج) ؛
}
آخر إذا (typeof old == 'وظيفة') {
إرجاع old.apply (هذا ، الحجج) ؛
}
}
} ؛
var userinfo = function () {
addmethod (هذا ، "Find" ، function () {
تنبيه ("لا معلمة") ؛
}) ؛
addmethod (هذا ، "البحث" ، وظيفة (الاسم) {
تنبيه ("تم تمريره في المعلمة هو ، يسمى"+اسم) ؛
}) ؛
addmethod (هذا ، "البحث" ، الدالة (الاسم ، القيمة) {
التنبيه ("تم تمريره في معلمتين ، يسمى أحدهما name ="+name+"والآخر يسمى value ="+value) ؛
}) ؛
} ؛
var userInfo = new userInfo () ؛
userInfo.find () ؛
userInfo.find ('من أنا؟') ؛
userInfo.find ('xxx' ، '1512412514') ؛
انظر ، هذا يجعل الأمر بسيطًا ...