function
理解(function ($) {})(jQuery),拆分如下:
(function(){}()); // 立即执行函数,相当于先申明一个函数,声明完后直接调用
(function(){
console.log(111);
}());
(function ($) {})(jQuery)相当于将jQuery对象当作一个参数传递给声明的匿名函数
const val = 123;
(function(val){
console.log(val);
}(val));
$.extend
定义和用法:
jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。
- 如果只为$.extend()指定了一个参数,则意味着参数target被省略。此时,target就是jQuery对象本身。通过这种方式,我们可以为全局对象jQuery添加新的函数。
- 如果多个对象具有相同的属性,则后者会覆盖前者的属性值。
语法:
$.extend( target [, object1 ] [, objectN ] )
指示是否深度合并
$.extend( [deep ], target, object1 [, objectN ] )
参数 | 描述 |
---|---|
deep | 可选。 Boolean类型 指示是否深度合并对象,默认为false。如果该值为true,且多个对象的某个同名属性也都是对象,则该"属性对象"的属性也将进行合并。 |
target | Object类型 目标对象,其他对象的成员属性将被附加到该对象上。 |
object1 | 可选。 Object类型 第一个被合并的对象。 |
objectN | 可选。 Object类型 第N个被合并的对象。 |
应用
在JQuery开发中,可以自定义方法,直接应用在$(dom)中:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>
<div id="test"></div>
</body>
<script>
(function ($) {
$.fn.extend({
setVal: function (val) {
if (!val) {
return false;
}
console.log(typeof val, val, $, $.fn);
}
});
})(jQuery);
$('#test').setVal('111');
</script>
</html>