javascript - 请问下这里的 call 和 apply 怎么理解
本文介绍了javascript - 请问下这里的 call 和 apply 怎么理解的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
最近项目中用到knockoutjs,在网上搜到了一个做分页模板的文章 http://www.cnblogs.com/zemin-wang/p/dotNet-Javascript-Knockout.html?utm_source=tuicool&utm_medium=referral#commentform
apply 和 call 这里不太理解,求大神指导下
paginationViewModel.apply(self, [10, function (page, pageHandler) {
debugger
self.loading(true);
$.ajax({
url: "dataHandler.ashx",
cache: false,
data: {
pageIndex: page,
pageSize: self.pageSize
},
success: function (data) {
if (typeof data === "string") {
data = $.parseJSON(data);
}
pageHandler.call(self, data);
self.items(data.list);
self.loading(false);
}
});
}]);
self.goToPage = function (page) {
if (typeof self.goToPageHandler == "function") {
self.goToPageHandler.call(self, page - 1, function (data) {
debugger
self.pageCount(Math.ceil(data.count / self.pageSize));
self.currentPage(page);
self.jumpPage(null);
self.caculatePages();
self.total(data.count);
});
};
};
ps:如果能有个图来表示this指针的指向再好不过了
解决方案
fn.call(this, a, b, c);
相当于 this.fn(a, b, c)
(相当于仿佛 fn 被赋值到了 this 上,当然实际上是没有的)
fn.apply(this, [a, b, c])
相当于 fn.call(this, a, b, c)
apply 的意义就在于,可以动态地对参数进行修改
这篇关于javascript - 请问下这里的 call 和 apply 怎么理解的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文