Я постараюсь ответить один за другим:
1) Почему вы хотите удалить скобки из вызова Functon?
2) Если «наивный» подход терпит неудачу, возможно, это потому, что вы вызываете maxFn и присваиваете результаты Array.prototype.max Должно быть так:
maxfn = function() {this[0]..}; Array.prototype.max = maxfn;
3) Роборг правильный, просто используйте буквенные обозначения для создания массивов на лету.
<ч />
Изменить:
Вот один из способов реализации функции max на объекте массива. Необязательный аргумент оценщика - это функция, которая принимает два параметра: текущее максимальное значение и текущее значение в массиве. Он должен вернуть объект, который "больше". Полезно для не примитивов.
Array.prototype.max = function(evaluator) {
var max, i = 1; len = this.length;
if (len > 0) max = this[0];
for (; i < len; i++) {
if (evaluator) {
max = evaluator(max, this[i]);
}
else if(max < this[i]) {
max = this[i];
}
}
return max;
};
var a = [1, 3, 4, 5, 6];
alert(a.max());
var b = ["Arnold", "Billy", "Caesar"];
alert(b.max());
var c = ["Arnold", new Date(), 99, true];
alert(c.max());
var d = [1, 3, 4, 5, 6];
alert(d.max(function (max, val) { return max < val ? val : max }));