0

これがどこかで答えられたら申し訳ありませんが(おそらくそうです)、適切に質問する方法さえよくわからないので、検索に失敗しました:(

基本的に私はこのようなことをしたいです:

(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にグローバルレベルで独自の名前空間を持たせたくありません。

すっごく...明らかに、上記のコードの最初のビットは機能しません。どうすればいいですか?それとも、このようなことは単に不可能ですか?これが以前に答えられたならば、遠慮なく閉じて、正しい方向に私を向けてください...

4

1 に答える 1

0

私はこのような何かがあなたの問題を解決すると思います:

(function() {
  var f = function() {
    //Prototype function
  };
  if(a)
    a.prototype.f = f;
  if(b)
    b.prototype.f = f;
})();
于 2011-04-29T14:50:49.803 に答える