Я читаю Douglas Crockford JavaScript: The Good Parts, и я немного смущен. В главе 4 в разделе "Расширение типов" он создает ярлык для добавления метода.
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
Он говорит:
Увеличивая функцию .prototype с помощью метода "метод", мы больше не необходимо ввести имя свойства прототипа. Это немного уродства теперь можно скрыть.
Затем он продолжает использовать это, чтобы добавить метод "integer" к прототипу номера с этим.
Number.method('integer', function () {
return Math[this < 0 ? 'ceil' : 'floor'](this);
});
document.writeln((-10 / 3).integer()); // -3
Я немного запутался здесь... потому что мы добавили метод метода к прототипу Function, а не прототипу Number. И, насколько мне известно, объект Number не наследуется от прототипа Function (хотя, возможно, я там не прав). Я вижу, что это работает, но я не понимаю, почему объекты Number могут использовать этот метод метода для добавления... методов.