Sto provando a fornire funzioni in tutti gli pocket
di nowjs. Mi piacerebbe farlo da _.extend
in tasca a tutti, cioè everyone.now
. Per qualche motivo che non riesco a capire, _.extend
non riesce a fornire correttamente la funzione sul lato client.Perché non riesco a estendere la tasca di tutti in nowjs?
Questo è il mio codice corrente:
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
Su entrambi i lati client e server, posso fare now.foo()
bene. D'altra parte, now.bar()
non riesce perché now.bar
non è definito. Questo è il caso su entrambi i lati client e server. Ho provato a verificare la presenza sul lato server, come mostrato sopra sull'ultima riga. Tuttavia, questa linea registra undefined
.
La funzione di Underscore extend
(ovviamente) funziona su altri oggetti, quindi suppongo che abbia qualcosa a che fare con il "magico spazio dei nomi" utilizzato da nowjs.
Come mai l'estensione non funziona con everyone.now
e come posso farlo funzionare?
Edit 2: ho fatta una buca un po 'più nel proxy. Sembra come impostare una proprietà su un proxy passando una variabile in quanto il suo nome non funziona. Ho rimosso la mia prima modifica perché questo testcase è più ristretto.
Perché non funziona? è un insetto? (La maggior parte delle volte mi chiedo io stesso so che non è, ma questo è davvero mi fa all'oscuro ...) risultato
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 ];
Log:
set called
get called
get called
A quanto pare, proxy[ key ] = "bar";
non causa set
da chiamare sul proxy. Perché?
L'esecuzione della stessa cosa sul mio sistema ottiene il risultato previsto di due chiamate a ciascuna funzione. Quale versione di nodo e nodo-proxy hai? – loganfsmyth
@Logan F. Smyth: Sto correndo sul nodo 0.6.5 che è uscito ieri. Sto eseguendo il nodo con il flag '--harmony_proxies', quindi non ho bisogno della libreria di terze parti. Potrebbe essere che l'implementazione di V8 contenga bug al momento mentre il nodo-proxy no. Lo controllerò, grazie. – pimvdb