Расширение встроенных объектов JavaScript при помощи прототипов - Прототипы объекта Math
ОГЛАВЛЕНИЕ
Прототипы объекта Math
Ниже описано создание прототипов некоторых функций объекта Math.
В Math нет ряда тригонометрических функций, которые могли бы упростить работу с тригонометрией. Как было сказано в самом начале статьи, объект Math не имеет свойства прототипа из-за своего фактического определения: объект Math – символьная константа, что означает, что он не имеет конструктора, поэтому он инициализируется механизмом JavaScript, а не создается с последующим созданием экземпляра объекта. В результате он не имеет свойства prototype. К счастью, его все же можно расширить, пропуская ключевое слово prototype. Это выглядит так:
// косинус, синус и котангенс math
Math.csc = function(x) { return 1 / Math.sin(x); }
Math.sec = function(x) { return 1 / Math.cos(x); }
Math.cot = function(x) { return 1 / Math.tan(x); }
...
// использование новых тригонометрических предикатов
var a = 45 * Math.PI / 180;
var b = Math.csc(a); // b == 1.4142135623730951
Реализация аналогов 'арк' оставлена на ваше усмотрение. Мы лишь расширили встроенный объект Math некоторыми достаточно распространенными тригонометрическими функциями; выгода в том, что больше не придется постоянно набирать на клавиатуре '1 / Math.aaa(x)', и код стал более читабельным, при условии, что вы любитель тригонометрии.
Для функций примера x должен быть числом; иначе вы получите NaN (так же, как для Math.sin(x) или любого другого метода Math, в таком случае).
Заключение
Немногие языки сценариев позволят вам создавать что-то другое на основе своих встроенных объектов, как делают полнофункциональные языки программирования при помощи подклассов. JavaScript – один из них; он позволяет веб-программистам создавать свои собственные разновидности JavaScript, развивать их творческий потенциал, и помогает им писать лучший код.