// 列表类定义
Ipms.GridPanel = function(){
    this.selections = new Ext.grid.RowSelectionModel(); // 组件定义
    this.toolBar = new Ipms.ToolBar(); // buttons组定义
                                                                         
                                                                         
    this._onSelectionChange = function(){
        this.name; // 注意:this指向selections,而不是GridPanel
        // do something..
    };
                                                                         
    // 为组件绑定事件
    this.selections.on('selectionchange', this._onSelectionChange);
};


虽然方法是在类GridPanel内部定义的,但是他是绑定给了selections,所以在方法内部的this会指向后者而不是前者。


因为selectionchange事件的接口已经固定了,我们不能修改,所以给自定义的方法_onSelectionChange 传递参数的一个办法就是给对象selections提前绑定属性,如下:


// 列表类定义
Ipms.GridPanel = function(){
    this.selections = new Ext.grid.RowSelectionModel(); // 组件定义
    this.toolBar = new Ipms.ToolBar(); // buttons组定义
                                                                         
                                 
    this.selections._toolBar = this.toolBar; // 传递参数           
    this._onSelectionChange = function(){
        this._toolBar; // 注意:this指向selections,而不是GridPanel
        // do something..
    };
                                                                         
    // 为组件绑定事件
    this.selections.on('selectionchange', this._onSelectionChange);
};


或者是给_onSelectionChange方法绑定作用域,略。