を作成して、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()
注:この例で渡されたプロキシ ハンドラは不完全です。詳細については、プロキシ: よくある間違いと誤解を参照してください。