Начиная с JavaScript 1.8.5, вы можете использовать метод Object defineProperty :
Object.defineProperty (object, propertyName, attributes);
Где attributes
- карта, в которой вы можете установить различные атрибуты, такие как value
, enumerable
и writable
. Если свойство существует, оно изменяется, в противном случае оно создается.
Юрий Зайцев создал таблицу совместимости ECMAScript 5 , в которой вы можете найти браузеры, поддерживающие defineProperty
(и многие другие функции), хотя он не учел, что Safari не поддерживает defineProperty
для DOM объекты - просто противоположность IE !!! :( -
EDIT
Юрий обновил таблицу.