Запрет на наследование стандартных объектов
Пишу простое расширение для Firefox. Мозилла отклонили его по причине:
"Extending the prototype of native objects like Object, Array and String is not allowed because it can cause compatibility problems with other add-ons or the browser itself" Тобишь, не разрешают мне расширять прототипы стандартных объектов. Логично. Объекты творю вот так (по рекомендациям, изложенным в статье на этом же сайте):
function MyClass() {};
MyClass.prototype = {
member01 : value01,
member02 : value02,
func01 : function () {
...
},
func02 : function () {
...
}
} // Prototype end
Подскажите, плз, это расширяет какой-либо стандартный прототип? Пара подключаемых библиотек творят объекты вот так:
function Class01(){
this.member01 = value01;
this.member02 = value02;
this.func01 = func01;
this.func02 = func02;
}
function func01(){
...
}
function func02(){
...
}
...и вот так:
function Class02(){
this.member01 = value01;
this.member02 = value02;
}
Class02.prototype.func03 = func03;
function func03(){
...
}
...может, это расширяет? Перелопатил весь код, не могу найти, где расширяю стандартные прототипы. Хелп, плз. |
Приведённый вами код не расширяет прототипы стандартных объектов.
|
Жаль, конечно!
Значит, к сожалению, мой вопрос остаётся октрытым.
Если ни один из приведённых выше вариантов не расширяет прототип Object или других, то расширяю где-то ещё. Существует какой-то мало-мальски универсальный способ найти, где я расширил стандартный объект? Что мне вообще нужно искать? Что-то вроде var a =new Array(); a.prototype.func = myFunc; ? |
Например, перебрать свойства прототипов циклом for-in. Стандартные свойства, как правило, не перебираются.
|
| Часовой пояс GMT +3, время: 16:32. |