выложенные обьекты
привет, проблема такая.
a={
z:"100",
y:{
x:function (){
alert(this.z);
}
}
}
Вопрос как сделать так чтобы функция x() обьекта Y получила доступ к обьекту z класса A. ей вызов должен соответственно выглядеть так: a.y.x(); а результатом должно быть диалоговое окно с текстом 100 |
var a = {
z: 100,
y: {
x:function (){
alert(this.z);
}
}
};
a.y.x.call( a );
|
Спасибо прекрасный пример. Но это немного не то.
мне нужно организовать api, к примеру.
Window.caption.setText("заголовок окна");
setText должен обратится в процессе работы к свойствам обьекта Window. к сожалению если Api функции придётся вызывать так: Window.caption.setText.call(Window) то есть вероятность что меня побьют другие программисты )))) |
одно решение я нашёл.
function uis(self){
this.self=self;
this.test=function(){
alert(this.self.slf);
}
};
$.Controller.extend("widget",{
slf:"hello ui",
// ui:new uis(this),
init: function(el){
this.ui=new uis(this);
}
});
в данном примере создаётся обьект widget, он наследует свойства обьекта Controller.В событии init который вызывается при создании экземпляра, я добавляю к widget свойство UI которому присваивается обьект возвращаемый конструктором uis. В свою очередь конструктору uis передаётся ссылка на widget, которой он потом и оперирует. теперь я могу написать что то вроде widget.ui.test(); и получить Hello UI. В этом варианте очень не нравится вызов конструктора uis при создании экземпляров widget. Совсем не хочется за удобство api платить скоростью. |
Можно и без конструктора:
var widget = {
slf: "hello ui",
ui: {
test: function(){
alert( this.self.slf );
}
}
};
widget.ui.self = widget;
widget.ui.test();
|
| Часовой пояс GMT +3, время: 13:06. |