Добавление функциональности стандартным типам
empty
|
defineProperty не поддерживается в старых браузерах.
|
Всё зависит от того, что вам требуется в итоге получить. Конечно же для расширения стандартных типов, то добавляйте функционал через prototype, defineProperty не чем особым не отличается, кроме как своим расширенным функционалом и дополнительными возможностями, которые по факту очень редко необходимы для решения поставленных задач. Первый же метод вообще бесполезен, вы просто затрачиваете лишние ресурсы, создавая дополнительные объекты, хотя в таком случаи исходный объект останется девственно чистым, но зачем он вам, если не быть криворуким то и без него всё будет работать.
А на последний вопрос: https://developer.mozilla.org/en-US/...defineProperty http://caniuse.com/#search=defineProperty И ещё в дополнение: http://jsperf.com/object-defineproperty-test |
Ну идеальных решений нету, всё всегда зависит от поставленной задачи, есть решения максимально эффективные и их найдёт только вы и только под свои нужды.
А насчёт ошибок, не уверен, что они будут расти, вам никто не мешает создать так же метод set в котором будет производиться проверка на наличие методов и свойств у объекта, это в том случаи если методов и свойств подразумевается большое количество, но за частую до такого не доходит, если конечно вы не собираетесь делать RIA в большой команде разработчиков. |
Часовой пояс GMT +3, время: 03:40. |