use*_*716 13 javascript default key function catch-all
考虑以下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
Run Code Online (Sandbox Code Playgroud)
myobj
如果func4()
在保留myobj.functionCall()
格式的同时没有定义键/函数(如),是否可以创建一个"全能"键?
Joc*_*oel 27
您可以使用Proxy和getter函数创建一个带有'wildcard'或'catch-all'键的JavaScript对象.与提供的解决方案不同,Proxy应该适用于任何环境,包括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"
Run Code Online (Sandbox Code Playgroud)
如果希望属性可以调用,只需返回一个函数:
var specialFoo = new Proxy(foo, {
get(target,name) {
return function() {
console.log('derp')
return name
}
}
})
specialFoo.callMe() // this will print derp
Run Code Online (Sandbox Code Playgroud)
详细信息:有关mozilla的文档
Joe*_*ldi 16
您正在寻找__noSuchMethod__
:
所有属性的JavaScript getter