Что я действительно ищет это код вроде следующего:Javascript: Создание методов/свойств объекта с помощью цикла по массиву
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 не моя сильная сторона.
Спасибо!
Wow! Благодарю. Это не только решает мою проблему, но и устраняет некоторые вещи. Вы знаете, мне никогда не нравился Javascript (я предпочитаю более структурированные языки, такие как python с реальными классами), но чем больше я узнаю, тем больше я осознаю свое собственное невежество, которое мне не нравится :) – Apollo
@Apollo: Да, это происходит много. Теперь я нахожу, когда я работаю на менее гибком языке (Java, скажем), я очень скучаю по гибкости JavaScript. :-) (Кстати, если вам нужны вещи, похожие на классы в JS, вот помощник, который я использую: http://code.google.com/p/lineagejs/. Это все еще прототипическое наследование [это замечательно], но с с некоторыми атрибутами класса.) –