理解jQuery的$.extend与$.fn.extend

时间:2021-12-25 05:55:58

https://www.cnblogs.com/xuxiuyu/p/5989743.html

上面这篇博客总结的很棒!!,以下对自己的认识做一个总结

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>理解$.extend与$.fn.extend</title>
<script type="text/javascript" src="../js/jquery-1.11.3.min.js"></script>
<style>
</style>
<script type="text/javascript">
(function($) {
$.extend({
speak : function() {
alert("how are you!");
}
});
$.fn.extend({
say : function() {
alert("hello!");
}
});
})(jQuery); $(function(){
$.speak();
$("#myDiV").say();
})
</script>
</head>
<body>
<div id="myDiv"></div>
</body>
</html>

将jquery理解为一个类,那么$.extend则会给这些类加上静态方法,扩展的是jquery这个类。

$.speak就只有$可以调用,而$("#myDiv")就不可以调用.speak()这个方法,正好比把jquery代表人类这个类,它可以吃喝笑跑,现在给它加上speak的功能,张三李四王五又不能代表全人类所以不能调用$.speak()方法

jQuery.extend(object); 为扩展jQuery类本身,为自身添加新的方法。

$.fn.extend就是给类的实例化对象加方法,比如div实例化为jquery对象后都可以调用.say()方法

$.fn.extend中,$是jquery的别名,fn是javascript中propotype的别名

$.fn.extend主要用于写插件,绝大部分插件都是去使用它

$.extend适用去去给jquery写一些init(),destroy()等方法