質問

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

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

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

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

役に立ちましたか?

解決

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

(function() {
  var f = function() {
    //Prototype function
  };
  if(a)
    a.prototype.f = f;
  if(b)
    b.prototype.f = f;
})();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top