Я хочу расширить Object.prototype, чтобы в основном поддерживать уведомления в данных JSON и элементах html через инфраструктуру пользовательского интерфейса.
Object.prototype.setValue = function(key,value){
// this simply sets value as this[key] = value
// and raises an event
Binder.setValue(this,key,value);
};
Object.prototype.getValue = function(key){
return Binder.getValue(this,key);
};
Однако, основываясь на этом вопросе, Extending Object.prototype JavaScript и некоторых других, люди говорят, что мы следует избегать расширения Object.prototype, вместо этого подойдет любой другой тип.
Если я этого не сделаю, то мой код станет больше, например
window.myModel.setValue("currentStatus","empty");
нужно будет написать так,
Binder.setValue(window.myModel,"currentStatus","empty");
Я хочу знать, что пойдет не так, если я воспользуюсь этими методами? приведет ли это к неожиданному поведению jQuery? Однажды я видел, что ajax-запрос jQuery также вызывает методы прототипа (поскольку они ссылаются на функции для обработки событий).
Каковы другие побочные эффекты этого? Я знаю, что это не работает для (var x в obj), но в основном мы можем использовать obj.hasOwnProperty, это должно помочь, верно?