是否有 JavaScript 对象的万能键之类的东西?
考虑以下 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
是否可以为 myobj
创建一个“catch-all”键,如果没有定义键/函数(如 func4()
中所示),该键将被调用code>),同时保留 myobj.functionCall()
格式?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用代理和 getter 函数创建带有“通配符”或“catch-all”键的 JavaScript 对象。与提供的解决方案不同,代理应该在几乎任何环境中工作,包括 Node.js
如果您希望属性可调用,只需返回一个函数:
详细信息:mozilla 文档
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
If you want the properties to be callable, simply return a function:
Details: documentation on mozilla
您正在寻找
__noSuchMethod__
:所有属性的 JavaScript getter
You're looking for
__noSuchMethod__
:JavaScript getter for all properties