您可以创建一个a,
Proxy以在访问未定义的属性时返回空字符串。
app.js:
var obj = {"foo":"bar"}, arr = [], p = Proxy.create({ get: function(proxy, name) { return obj[name] === undefined ? '' : obj[name]; } });arr.push( p.foo );arr.push( p.notDefinedonObj );console.log(arr);
正如问题作者David
Murdoch指出的那样,如果您使用的是节点v0.6.18(撰写本文时是最新的稳定版本),则
--harmony_proxies在运行脚本时必须传递该选项:
$ node --harmony_proxies app.js[ 'bar', '' ]
请注意,此解决方案将 不会 ,如果你使用的工作
with,如:
var obj = {"foo":"bar"}, arr = [], p = Proxy.create({ get: function(proxy, name) { return obj[name] === undefined ? '' : obj[name]; } });with ( p ) { arr.push( foo ); // ReferenceError: foo is not defined arr.push( notDefinedonObj );}console.log(arr);
with将代理
get添加到作用域链时,似乎没有调用代理的方法。
注意:
Proxy.create()在此示例中传递给的代理处理程序 不完整
。有关更多详细信息,请参见代理:常见错误和误解。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)