В настоящее время у меня есть следующий код JavaScript (свободно смоделированный после достижения аналогичной цели в should.js
):
var example = function() {
var isFoo, isBar;
return {
baz: function(x) {
if (isFoo) return x + 2;
else if (isBar) return x - 2;
},
get foo () {
isFoo = true;
return this;
},
get bar () {
isBar = true;
return this;
},
}
};
Это позволяет мне сделать что-то вроде:
example().foo.baz(2);
// 4
Моя основная задача - разрешить вызовы foo
и bar
без использования скобок, поскольку они никогда не будут принимать никаких аргументов и делают цепочку вызовов более читабельной. Когда я пропустил этот код через uglify.js
, он задохнулся от ключевого слова get
, а когда я исследовал, я обнаружил, что использование ключевого слова get
не очень хорошая идея (как для производительности, так и для совместимости).
Есть какие-нибудь мысли о том, как я могу реорганизовать этот кусок кода, чтобы я мог продолжать вызывать foo
и bar
без скобок и не прибегая к использованию ключевого слова get
? Я пытался определить foo и bar как свойства, но не мог понять, как заставить его работать.