关于扩展方法和函数调用的优先级
$.fn.extend({
dropdown: function(){
return this.each(function() {
dropdown(this);
});
}
});
$('.dropdown').dropdown();这行代码中的dropdown()会先查找原型链上有没有这个方法,有就调用原型链上的,没有就调用js中定义的函数,这里用extend把方法绑定在了原型链上,所以执行extend里面的dropdown方法。结论:原型链上的方法优先级高于js中写的同名函数,两个同名但不覆盖,因为一个在对象的原型链上,理解成所属的作用域不同,这个理解对吗?
然后就是原型链上的dropdown(this),这里为什么调用了js定义的函数dropdown(),按照原型链上的方法优先级高于js中写的函数,那么应该会自身调用自身啊?就是这里感觉很绕
15
收起
正在回答
1回答
同学你好,理解的有点偏,可以根据以下说明,整理一下自己的思路:
$.fn.extend() 方法是为jQuery扩展方法,它会将方法添加在jquery的原型上:
然后jq对象就可以直接调用该方法了,如下:
由于该方法内部,调用了js中的dropdown,所以会继续执行js中的dropdown方法,如下:
关于this的指向,可以参考如下:
如果我的回答帮到了你,欢迎采纳,祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星