JavaScript: прототипирование с несколькими объектами - PullRequest
0 голосов
/ 29 апреля 2011

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

В основном я хочу сделать что-то подобное:

(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 Ответ

0 голосов
/ 29 апреля 2011

Думаю, что-то подобное решит вашу проблему:

(function() {
  var f = function() {
    //Prototype function
  };
  if(a)
    a.prototype.f = f;
  if(b)
    b.prototype.f = f;
})();
...