关于函数调用的问题
来源: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
我觉得这个看上去就像递归函数一样,该怎么理解呢
相似问题