Considering the following javascript example:
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
Is it possible to create a 'catch-all' key for myobj
that will get called if there is no key/function defined (as in func4()
) while retaining the myobj.functionCall()
format?
No, JavaScript objects cannot have duplicate keys. The keys must all be unique.
Use object. keys(objectName) method to get access to all the keys of object.
Can you use objects as Object keys in JavaScript? # The short answer is "no". All JavaScript object keys are strings.
Object keys can only be strings, and even though a developer can use other data types to set an object key, JavaScript automatically converts keys to a string a value.
You can create a JavaScript object with 'wildcard' or 'catch-all' keys using a Proxy and a getter function. Unlike the solutions provided, a Proxy should work in just about any environment, including 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"
If you want the properties to be callable, simply return a function:
var specialFoo = new Proxy(foo, {
get(target,name) {
return function() {
console.log('derp')
return name
}
}
})
specialFoo.callMe() // this will print derp
Details: documentation on mozilla
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With