Я хочу получить синтаксис, подобный этому, используя JS-установщики и геттеры:
globe.camera.position = Position.create();
Это эквивалентно следующему выражению:
globe.getCamera().setPosition(Position.create());
У меня нет проблем с созданием «первого уровня» геттеров / сеттеров, часть .camera, например:
function Camera() {
var x,y,z;
this.__defineGetter__("camera", function() {
alert("This is the camera getter");
});
this.__defineSetter__("camera", function(position) {
alert("This is the camera setter");
});
}
...
globe=new Camera();
globe.camera=...
c=globe.camera;
...
Но я не совсем уверен, как определить геттер положения внутри камеры. Я пытаюсь что-то вроде этого, но это не сработает:
function Position() {
this.__defineGetter__("position", function() {
alert("This is the position getter");
});
}
globe.camera=new Position();
pos=globe.camera.position;
Предупреждение внутри геттера не появится. Есть какие-нибудь подсказки по этому поводу? Возможно ли вообще добиться такого поведения? Я много искал в Google, но не смог найти правильные условия поиска, и примеры для получателей / установщиков, как правило, очень просты. Заранее спасибо.