1. 拷贝对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../../jQuery.min.js"></script>
</head>
<body>
<!--
```jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象```;
如果想要把某个对象拷贝给另给一个对象使用,此时就要使用 $.extend([deep], target, object1, [objectN])方法了!
深拷贝和浅拷贝;
deep: true为深拷贝, 默认false为浅拷贝;
target: 要拷贝的目标对象;
object1: 待拷贝到第一个对象的对象;
-->
<script>
$(function () {
var targetObj = {};
var obj = {
id: 1,
name: "tom"
}
$.extend(targetObj, obj); //把obj拷贝给targetObj
console.log(targetObj);
console.log('------------------------');
var _targetObj = {
id: 0
};
var _obj = {
id: 8998,
name: "andy"
};
$.extend(_targetObj, _obj);
console.log(_targetObj); // _targetObj原来的id被覆盖掉了, 同时name被添加进去了
console.log('-------------------------');
//深浅拷贝
//1. 浅拷贝:只是把被拷贝对象的 【复杂数据类型中的地址给目标对象】,修改目标对象会影响被拷贝对象!
// 默认是false,浅拷贝;
console.log('----浅拷贝-----');
var __targetObj = {
id: 0,
msg: {
sex: 'man'
}
};
var __obj = {
id: 888,
msg: {
age: 18
},
name: "andy"
};
$.extend(__targetObj, __obj);
__targetObj.msg.age = 89;
console.log(__targetObj); // msg整体被覆盖, name被添加进去了
console.log(__obj); // 和__targetObj内容是一样的
/*
此时__targetObj 和 __obj中复杂类型msg对象的地址都是一样的,
而后又修改了msg中的age, 所以最终__targetObj和__obj的结果应该是一样的;
对于简单数据类型来说:和目标对象相同的直接覆盖,其他直接追加进目标对象当中: 如id发生覆盖,name进行追加;
{
id: 888,
msg: { age: 89 }
name: 'andy'
}
*/
//2. 深拷贝: 两个对象,仅仅是值的拷贝,单独有内存空间, 互不影响
console.log('----深拷贝-----');
var ___targetObj = {
id: 0,
msg: {
sex: 'man'
}
};
var ___obj = {
id: 888,
msg: {
age: 18
},
name: "andy"
};
$.extend(true, ___targetObj, ___obj);
___targetObj.msg.age = 999;
console.log(___targetObj); // id被替换了, msg进行了合并
console.log(___obj); // ___obj保持原样
/*
此时___targetObj 和 ___obj对象中的复杂类型msg对象的地址都不一样,各是各的,彼此互不影响;
所以最终结果:
___targetObj
{
id: 888,
msg: { sex: 'man', age: 999 }
name: 'andy'
}
___obj
{
id: 888
msg: { age: 18 }
name: 'andy'
}
*/
});
</script>
</body>
</html>
2. 多库共存
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../../jQuery.min.js"></script>
</head>
<body>
<div></div>
<span></span>
<!--
jQuery使用$作为标识符, 随着jQuery的流行, 其他js库也可能用$作为标识符, 这样一起使用会产生冲突;
此时需要一个解决方案, 让jQuery和其他js库不存在冲突, 可以同时存在, 这就叫做多库共存.
解决方案:
1. 如果$产生了冲突, 那么干脆在jQuery中使用jQuery来代替$; jQuery("div")
2. jQuery变量规定新的名称: $.noConflict(), var xx = $.noConflict(); xx("");
-->
<script>
$(function() {
//自己封装的函数, 使用了$作为函数名;
function $(ele) {
return document.querySelector(ele);
}
console.log($("div"));
var _SB = jQuery.noConflict(); //好比说这个_SB变量就相当于之前直接使用$(), jQuery()的那种形式
console.log(_SB("div"));
console.log(_SB("span"));
})
</script>
</body>
</html>
3. 插件
案例gitee地址:
https://gitee.com/studyCodingEx/studys
3.1
init
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
jQuery功能有限, 想要更复杂的效果, 可以借助jQuery插件完成;
注意:这些插件都是依赖于jQuery来完成的, 所以必须先引入jQuery文件, 因此也称为jQuery插件;
jQuery之家:http://www.htmleaf.com/
jQuery插件库:http://www.jq22.com/
-->
</body>
</html>
3.2
瀑布流
3.3
图片懒加载
3.4
全屏滚动
3.4
bootStrap-Js插件
3.5
阿里百秀
3.6
toDoList