关于函数调用的问题
来源:2-8 用js实现淡入淡出和卷下卷起效果
兰香川川
2020-01-15 11:24:23
// 提取show公共部分
function show($elem, callback) {
if ($elem.data('status') === 'show') return;
if ($elem.data('status') === 'shown') return;
$elem.data('status', 'show').trigger('show');
callback();
}
var silent = {
show: function($elem) {
show($elem, function() {
$elem.show();
$elem.data('status', 'shown').trigger('shown');
});
},
}想问下按以下方式调用
var $box = $('#box');
silent.show($box);在silent内部的show方法继续调用$elem.show(),那么为什么会选择到外部的自定义函数show去?还有jQuery不是自己封装了show()函数的吗,为什么没有调用到?
2回答
好帮手慕慕子
2020-01-16
同学你好,对于你的问题解答如下:
slient.show($box)表示调用slient对象下的show方法,slient内部show方法内部是直接调用提前定义好的公共方法show。 具体可以参考下图:

jQuery自己封装的方法是直接使用$elem.show()这种写法调用。而老师的写法是slient.show($box),调用的是自定义的方法。
这里不是递归,同学结合上图,将两个show方法区分开就好理解了。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
兰香川川
提问者
2020-01-15
我觉得这个看上去就像递归函数一样,该怎么理解呢
相似问题