我可以向对象添加一些功能,当访问 undefined object 属性时将返回默认值吗?
例如这样的事情:
var obj = {
a:1,
b:2,
// can i add some functional here, which
// will return default value
// when accessing a missing property
// for example "property "+prop+" missing in obj"?
}
alert(obj.c) // "property c missing in obj"
有什么办法吗?
最佳答案
您想要的是JavaScript proxies。但是,浏览器对它们的支持很弱。
如果您希望程序在所有现代浏览器上运行,则不应该使用代理。但是,如果您在服务器端或其他受限制的环境中使用JavaScript,则可以选择。我认为例如Node.js支持它们(尽管对此我可能是错的)。
如果您正在处理跨浏览器的代码,那么我不知道要实现所需功能的任何巧妙方法。