JavaScript: прототипирование с несколькими объектами
Извините, если где-то ответили (возможно, так и есть), но я не совсем уверен, как правильно спросить об этом, поэтому я не смог найти:(
В основном я хочу сделать что-то вроде этого:
(a||b).prototype.c = function () {
// do something
}
В основном a и b являются объектами. Один или другой будет существовать, но не оба. Но я не знаю, какой из них будет существовать, но мне нужно добавить метод к тому, что есть.
Теперь я знаю, что могу сделать что-то вроде этого:
if (typeof(a) == 'object') {
a.prototype.c = c;
} else if (typeof(b) == 'object') {
b.prototype.c = c;
}
function c () {
// do something
}
Но это проблема того, чтобы иметь собственное пространство имен на глобальном уровне, и я не хочу этого. Я не хочу, чтобы у c было свое собственное пространство имен на глобальном уровне в любой момент времени.
Су... очевидно, первый фрагмент кода выше не работает. Как бы я пошел по этому поводу? Или что-то подобное просто невозможно? Пожалуйста, не стесняйтесь закрывать и указывать мне правильное направление, если на этот вопрос уже был дан ответ...
1 ответ
Я думаю, что-то подобное решит вашу проблему:
(function() {
var f = function() {
//Prototype function
};
if(a)
a.prototype.f = f;
if(b)
b.prototype.f = f;
})();