Как предотвратить изменение в Object.prototype? - PullRequest
0 голосов
/ 01 ноября 2019


Я добавляю некоторые методы utils в класс объектов:

Object.prototype.doSomething = function () {
   // do something
};

А теперь я хочу предотвратить любое добавление к Object.prototype, возможно ли это?

1 Ответ

1 голос
/ 01 ноября 2019

Да, вы можете сделать объект нерасширяемым и сделать все его свойства доступными только для чтения с помощью Object.freeze.

Object.freeze(Object.prototype);

После этого я тщательно протестирую,: -)


Примечание: я бы настоятельно рекомендовал не использовать простое назначение для добавления свойств в Object.prototype. Расширение Object.prototype вообще обычно не рекомендуется, но если вы собираетесь это сделать, убедитесь, что новые свойства не перечисляются с помощью defineProperty:

Object.defineProperty(Object.prototype, "doSomething", {
    value: function () {
        // do something
    }
});
...