我可以向对象添加一些功能,当访问 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支持它们(尽管对此我可能是错的)。

如果您正在处理跨浏览器的代码,那么我不知道要实现所需功能的任何巧妙方法。

10-07 19:07
查看更多