JS 类、对象,获取参数的问题



今天重构代码遇到个问题,其实就是JS的解释和执行顺序问题。

代码一:

// 类定义GridPanel
Ipms.GridPanel = function(){
    this._selections = new Ext.grid.RowSelectionModel();
    this._toolBar = new Ipms.ToolBar(this);
    this.getSelectionModel = function(){ // get
        return this._selections;
    };
};
// 类定义ToolBar
Ipms.ToolBar = function(grid){
    this._selectionModel = grid.getSelectionModel(); // set
    this._selectionChange = function(){
        // do something..
    };
    this._selectionModel.on('selectionchange', this._selectionChange);
};


ToolBar中给GridPanel的SelectionModel定义了监听事件,但是没有起到作用。

由于JS的解释、执行的顺序问题,所以ToolBar中执行set行的时候,grid的get()方法还没有被解释、执行。


以本人目前的功力,解决办法是直接传递对象的索引,代码如下:

// 类定义GridPanel
Ipms.GridPanel = function(){
    this._selections = new Ext.grid.RowSelectionModel();
    this._toolBar = new Ipms.ToolBar(this,this._selections);
};
// 类定义ToolBar
Ipms.ToolBar = function(grid,selectionModel){
    this._selectionModel = selectionModel;
    this._selectionChange = function(){
        // do something..
    };
    this._selectionModel.on('selectionchange', this._selectionChange);
};


问题解决,不过这样的方式太丑陋、太暴力了,我不喜欢。明天给出好一些的方案。



你可能感兴趣的:(js,类,对象,引用)