JavaScript: прототипирование с несколькими объектами

StackOverflow https://stackoverflow.com/questions/5833572

Вопрос

Извините, если на него где -то отвечает (вероятно, это так), но я не совсем уверен, как даже спросить это правильно, поэтому я не смог поискать :(

В основном я хочу сделать что -то вроде этого:

(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;
})();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top