您可以创建一个 < a href=>" "https:// developmenter.mozilla.org/en/JavaScript/Reference/Global_Objects/Proxy" rel="noreferr"\\code >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 (撰写此文章时的最新稳定释放时间),您必须在运行脚本时通过 < code>- harmony_ proxies 选项 :
$ node --harmony_proxies app.js
[ bar , ]
请注意, 如果您使用 < code> 和 < /code >, 此解决方案将 < strong > non strong > 工作, 如 :
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
在向范围链添加代名词时,似乎不称代理 S get
方法 。
注:在此示例中,代理处理器传递到 Proxy.capide ()
是 不完全 。见>Proxy:常见错误和误解 。