1

如果我创建一个对象

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

然后我设置

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

如何foo()找出它的父母是Aor B

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 回答