Вы не можете сделать это динамически, значение this
внутри функции будет указывать на объект, где функция связана как свойство.
Например, если вы вызываете foo.bar.func();
,значение this
внутри func
будет относиться к объекту foo.bar
, невозможно динамически определить, принадлежит ли this
к foo
, без явной проверки всех свойств foo
(и, конечно, заранее знать заранее)где проверить).
Помните, что объекты обрабатываются как ссылки, поэтому на объект можно ссылаться из разных мест.
Не усложняйте себя, найдите своих членов, используя ссылку obj
, будь проще:
var obj = {
dimensions : {
x : 100,
y : 100,
//...
cmp : function () {
return this.x + this.y;
}
},
definition : {
base : {
rect1 : {
foo: function () {
obj.dimensions.cmp();
alert(obj.dimensions.x);
}
}
//...
}
}
};