みんなのpocket
nowjsに機能を提供しようとしています。_.extend
私はみんなのポケット、すなわち ingによってそうしたいと思いeveryone.now
ます。私が理解できない何らかの理由_.extend
で、クライアント側で機能を適切に提供できません。
これは私の現在のコードです:
var _ = require("underscore"),
everyone = require("nowjs").initialize(app);
everyone.now.foo = function() {};
_.extend(everyone.now, {
bar: function() {}
});
console.log(everyone.now.foo); // [Function]
console.log(everyone.now.bar); // undefined
サーバー側とクライアント側の両方で、問題なく実行できますnow.foo()
。一方、は定義されていないnow.bar()
ため失敗します。now.bar
これは、クライアント側とサーバー側の両方に当てはまります。上記の最後の行に示されているように、サーバー側で存在を確認しようとしました。ただし、この行はログに記録しundefined
ます。
Underscore のextend
関数は (明らかに) 他のオブジェクトでも機能するので、nowjs が使用する「魔法の名前空間」と関係があると思います。
拡張が機能しないのはeveryone.now
なぜですか?どうすれば機能させることができますか?
編集 2:プロキシをさらに掘り下げました。名前が機能しないため、変数を渡してプロキシにプロパティを設定するようです。このテストケースはより絞り込まれているため、最初の編集を削除しました。
なぜこれが機能しないのですか?これはバグですか?(ほとんどの場合、私はそうではないことを知っていますが、これは本当に私を無知にしています...)
var proxy = Proxy.create({
get: function(pr, name) {
console.log("get called");
return null;
},
set: function(pr, name, value) {
console.log("set called");
}
});
var key = "foo";
proxy["foo"] = "bar";
proxy[ key ] = "bar";
proxy["foo"];
proxy[ key ];
ログ結果:
set called
get called
get called
どうやら、プロキシで呼び出されることproxy[ key ] = "bar";
はありません。set
何故ですか?