日期:2014-05-16  浏览次数:20724 次

extjs菜鸟,请教一个自定义类的问题,拜托各位大虾啦 - Web 开发 / Ajax
在网上找到一个实例,里面有段代码
Ext.grid.CheckColumn = function(config) {
Ext.apply(this, config);
if (!this.id) {
this.id = Ext.id();
}
this.renderer = this.renderer.createDelegate(this);
};

Ext.grid.CheckColumn.prototype = {
renderer : function(v, p, record) {
p.css += ' x-grid3-check-col-td';
return '<div class="x-grid3-check-col' + (v ? '-on' : '') + ' x-grid3-cc-' + this.id + '">&#160;</div>';
}
};

我只知道这是创建了一个带构造函数的自定义类,然后通过Ext.grid.CheckColumn.prototype创建了实例方法,现在不明白的是
this.renderer = this.renderer.createDelegate(this);这个是什么意思啊?

------解决方案--------------------
createDelegate是创建一个函数,其函数体为用指定参数(这里是CheckColumn的实例)来调用当前方法,封装在一个新的函数中返回。

例如:

var sayHi = function(name){
alert('Hi, ' + name );
}

var btn = new Ext.Button({
text: 'Say Hi',
renderTo: Ext.getBody()
});

btn.on('click', sayHi.createDelegate(btn, ['Fred']));
为按钮指定了响应方法,并传递name参数的值为Fred