Я хочу добавить метод к каждому объекту.
Когда я просто установлю Object.prototype.somefunction = ...
, он появится, когда кто-то перечислит объект, используя обычный шаблон:
for (i in o){
if (o.hasOwnProperty(i)){
// do something with object
}
}
Я попытался установить его выше в цепочке прототипов, но это невозможно (по крайней мере, невозможно в Chrome):
TypeError: Невозможно установить свойство 'бла' из неопределенного
Могу ли я установить какой-либо флаг или что-то еще в методе, чтобы он не перечислялся, как это делают нативные методы?(Или хотя бы hasOwnProperty()
return false
.)
Обновление: Извините, я не посмотрел на это должным образом.Я использую ExtJS Framework, и объект, на который я смотрел, был обработан Ext.apply (), который выполняет следующее:
for(var p in c){
o[p] = c[p];
}
Вот где теряется флаг "Свойство".
Итак, я думаю, что у меня нет шансов (в ECMAScript <5) внедрить метод во все объекты, которые ведут себя как нативные? </p>