Расширение встроенных объектов 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, развивать их творческий потенциал, и помогает им писать лучший код.