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;
})();
Другие вопросы по тегам