Глядя на различные методы поиска максимальных/минимальных значений в массиве Javascript, я часто вижу расширяющийся прототип самого объекта массива. Итак, имея:
var a=[22,33,44,32,1];
Array.max=function(v) {
return Math.max.apply(this,v);
};
Array.max(a); // returns 44
Однако я часто делаю, как показано ниже:
Array.prototype.max=function() {
return Math.max.apply(this,this);
};
a.max(); // returns 44
Это позволяет мне вызывать max() без параметров самого объекта Array. Лично я не вижу в этом никаких проблем, и мне все время интересно, не упускаю ли я что-то, и у этого метода есть какие-то серьезные проблемы, которые я упускаю из виду? Безопасно ли использовать как Array.max(arrayhere)
?
РЕДАКТИРОВАТЬ: правильно ли сказать, что в первом примере мы создаем статический метод для собственного объекта массива Javascript, а во втором примере мы расширяем прототип массива?
this
зависит от того, как вы вызываете функцию. Вы вызываете его без контекста, тогда по умолчанию он равенwindow
. Ты второй пример должен быть наprototype
. - person elclanrs   schedule 28.01.2014Array
… - person Bergi   schedule 28.01.2014