Я написал следующую функцию в составе разрабатываемого плагина jQuery:
$.fn.append2 = function(collection, callback) {
var $this = this;
$.each(collection, function(key, value) {
$this.append(callback ? callback(key, value) : value);
});
return this;
};
После тестирования высокорекурсивной функции, сильно зависящей от .append2
, я оптимизировал .append2
для:
$.fn.append2 = function(collection, callback) {
var $this = this;
$.each(collection, callback
? function(key, value) { $this.append(callback(key,value)); }
: function(key, value) { $this.append(value); }
);
return this;
};
Хотя этот код более эффективен с точки зрения скорости, он все же оставил меня неудовлетворенным.По сути, я определил одну и ту же функцию дважды:
function(key, value) { $this.append(callback(key,value)); }
function(key, value) { $this.append(value); }
И я подумал, есть ли язык, который позволяет мне определять функцию только один раз как:
function(key, value) { $this.append(value); }
И затем работатьна нем, заменив аргумент на $this.append
с value
на callback(key, value)
.(И нет, не манипулируя строками. Управляя самой функцией.)
Есть ли такой язык программирования?