Я пытаюсь предоставить функции в каждом pocket
из nowjs. Я хотел бы сделать это, _.extend
набив всем карманы, т.е. 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
на прокси. Это почему?
--harmony_proxies
, поэтому мне не нужна сторонняя библиотека. Возможно, реализация V8 на данный момент содержит ошибки, а node-proxy — нет. Я проверю это, спасибо. - person pimvdb   schedule 05.12.2011