1

オブジェクトを作成する場合

var O = { A : {}, B : {}}

次に設定しました

O.A.foo = function() { }
O.B.foo = function() { }

その親がまたはfoo()であるかどうかを調べるにはどうすればよいですか?AB

4

2 に答える 2

6

thisが鍵です:

O.A.foo = O.B.foo = function() {
    if (this === O.A) {
        // it's A
    }
    else if (this === O.B) {
        // it's B
    }
}

http://jsfiddle.net/mattball/2nhnH/


ただし、これは少しコードの匂いがするように思えます。

于 2012-04-29T14:29:40.637 に答える
2

おそらく、あなたの質問にはもっと多くのことがあります。答えは、関数は別の関数であるため、関数は既に知っているからです。

O.A.foo = function() { /* this is called on A */ }
O.B.foo = function() { /* this is called on B */ }
于 2012-04-29T15:19:12.393 に答える