هل هناك شيء مثل مفتاح كل شيء لكائن JavaScript؟
-
23-09-2019 - |
سؤال
النظر في مثال JavaScript التالي:
var myobj = { func1: function() { alert(name in this) },
func2: function() { alert(name in this) },
func3: function() { alert(name in this) }
}
myobj.func2(); // returns true
myobj.func4(); // undefined function
هل من الممكن إنشاء مفتاح "catch-all" myobj
سيتم استدعاء ذلك إذا لم يكن هناك مفتاح/وظيفة محددة (كما في func4()
) مع الاحتفاظ myobj.functionCall()
صيغة؟
المحلول
أنت تبحث عن __noSuchMethod__
:
JavaScript Getter لجميع الخصائص
نصائح أخرى
يمكنك إنشاء كائن JavaScript مع مفاتيح "Wildcard" أو "Catch-All" باستخدام وكيل ودالة getter. على عكس الحلول المقدمة ، يجب أن يعمل الوكيل في أي بيئة تقريبًا ، بما في ذلك node.js
var foo = new Object()
var specialFoo = new Proxy(foo, {
get(target,name) {
// do something here
return name
}
})
console.log(specialFoo.blabla) // this will output "blabla"
إذا كنت تريد أن تكون الخصائص قابلة للاتصال ، فما عليك سوى إرجاع وظيفة:
var specialFoo = new Proxy(foo, {
get(target,name) {
return function() {
console.log('derp')
return name
}
}
})
specialFoo.callMe() // this will print derp
تفاصيل: وثائق على موزيلا
لا تنتمي إلى StackOverflow