aralejs/aralejs.github.io

arale的模块继承的疑问,请高手解答,不胜感激!

Closed this issue · 4 comments

场景如下:
创建一个类"BasePageList",继承自Base,该类就具备了extend方法,该类中的两个方法存在相互调用,调用方式为:
gotoDeletePage : function() {
// 取得选中的项目
this.getSelectedItems();
......
}
将gotoDeletePage 方法绑定到某个按钮:
// 删除按钮事件
$('#deleteButton').click(this.gotoDeletePage);

但是在运行时,单击该按钮后,执行进入gotoDeletePage 方法时 this 的context变成了deleteButton按钮,会提示找不到getSelectedItems方法,如何是好呢?请高手解答不胜感激。

这和 arale 没关系,是 js 基础。

var that = this;
$('#deleteButton').click(function() {
  that.gotoDeletePage();
});

闭包的 this 指向问题,楼主要加强下基础。

var that = this;
$('#deleteButton').click(function() {
that.gotoDeletePage();
});

这个回答是有问题的。 下边这个才是正解!
function hitch(context, fn){
return function() {
fn.apply(context, arguments);
}
}

$('#deleteButton').click(hitch(this, this.gotoDeletePage));

有进步, 楼主可以进一步再加强理解. this 是一个比较复杂的话题, 楼主可以继续在找些这方面的文章再看看呀.