【发布时间】:2014-11-05 14:54:53
【问题描述】:
我真正想要的是如下代码:
var painter = {}; // An object to hold methods
var colors = ['blue', 'red', 'green', 'yellow']; // The names of methods to be defined
colors.forEach( function(color) {
painter.defineMethod(color, function(){ console.log(color); });
});
painter.blue() // writes blue
painter.red() // writes red
etc.
painter.defineMethod() 是关键。
我必须为一个对象定义几个(超过 40 个)方法,它们基本上都是相同的,只有微小但可预测的变化,实际上都调用了另一个方法。例如:
painter.blue = function(tool) {
painter.draw('blue', tool); // Would paint blue with a brush or pencil or whatever.
}
这样的事情可能吗,还是我坚持明确定义所有这些属性?一种方式或另一种方式是否有任何性能优势?
在具有可变变量或魔术方法的语言中很容易的事情在 Javascript 中被证明是困难的(或不可能的)。虽然我承认 javascript 不是我的强项。
谢谢!
【问题讨论】:
标签: javascript loops object methods