JavaScript: прототипирование с несколькими объектами
-
27-10-2019 - |
Вопрос
Извините, если на него где -то отвечает (вероятно, это так), но я не совсем уверен, как даже спросить это правильно, поэтому я не смог поискать :(
В основном я хочу сделать что -то вроде этого:
(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 есть свое пространство имен на глобальном уровне, и я этого не хочу. Я не хочу, чтобы у C имел собственное пространство имен на глобальном уровне в любой момент времени.
Су ... Очевидно, что первый кусочек кода выше не работает. Как я бы сделал это? Или что -то подобное просто невозможно? Пожалуйста, не стесняйтесь закрывать и укажите мне в правильном направлении, если на это было дано ранее ...
Решение
Я думаю, что что -то подобное решит вашу проблему:
(function() {
var f = function() {
//Prototype function
};
if(a)
a.prototype.f = f;
if(b)
b.prototype.f = f;
})();