一、jQuery 拷贝对象
1.1、说明
如果想要把某个对象拷贝(合并) 给另外一个对象使用,此时可以使用 $.extend() 方法。
1 2 3 4 5 6 7 8 9 10
| # 语法 $.extend([deep], target, object1, [objectN]) # 说明 1. deep: 如果设为true 为深拷贝, 默认为false 浅拷贝 2. target: 要拷贝的目标对象 3. object1: 待拷贝到第一个对象的对象。 4. objectN: 待拷贝到第N个对象的对象。 5. 浅拷贝目标对象引用的被拷贝的对象地址,修改目标对象会影响被拷贝对象。 6. 深拷贝,前面加true, 完全克隆,修改目标对象不会影响被拷贝对象。
|
1.2、拷贝案例
1.2.1、案例1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <body> <script> var targetObj = {};
var source = { id: 1, uname: 'HelloWorld' };
$.extend(targetObj, source);
console.log(targetObj); </script> </body>
|
1.2.2、案例2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <body> <script> var targetObj = { id: 10 };
var source = { id: 1, uname: 'HelloWorld' };
console.log(targetObj);
$.extend(targetObj, source);
console.log(targetObj); </script> </body>
|
1.2.3、案例3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <body> <script> var targetObj = { age: 90 };
var source = { id: 1, uname: 'HelloWorld' };
console.log(targetObj);
$.extend(targetObj, source);
console.log(targetObj); </script> </body>
|
1.2.4、案例4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <body> <script> var targetObj = { id: 0, msg: { sex: '男' } };
var source = { id: 1, uname: 'HelloWorld', msg: { age: 18 } }; $.extend(targetObj, source);
console.log(targetObj); </script> </body>
|
1.2.5、案例5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <body> <script> var targetObj = { id: 0, msg: { sex: '男' } };
var source = { id: 1, uname: 'HelloWorld', msg: { age: 18 } }; $.extend(targetObj, source);
targetObj.msg.age = 30;
console.log(targetObj); console.log(source); </script> </body>
|
1.2.6、案例6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <body> <script> var targetObj = { id: 0, msg: { sex: '男' } };
var source = { id: 1, uname: 'HelloWorld', msg: { age: 18 } }; $.extend(true, targetObj, source);
console.log(targetObj); </script> </body>
|
1.2.7、案例7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <body> <script> var targetObj = { id: 0, msg: { sex: '男' } };
var source = { id: 1, uname: 'HelloWorld', msg: { age: 18 } }; $.extend(true, targetObj, source);
targetObj.msg.age = 30;
console.log(targetObj); console.log(source);
</script> </body>
|
二、 jQuery 多库共存
2.1、说明
jQuery使用$作为标识符,随着jQuery的流行,其他 js 库也会用这$作为标识符, 这样一起使用会引起冲突。
需要一个解决方案,让jQuery 和其他的js库不存在冲突,可以同时存在,这就叫做多库共存。
jQuery 解决方案:
- 把里面的 $ 符号 统一改为 jQuery。 比如 jQuery(‘’div’’)
- jQuery 变量规定新的名称:$.noConflict() var xx = $.noConflict();
2.2、案例
2.2.1、问题引入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <body> <div>CSS</div> <script>
function $() { console.log('HelloWorld'); }
$();
var $div = $('div'); console.log($div); </script> </body>
|
2.2.2、解决方案一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <body> <div>CSS</div> <script>
function $() { console.log('HelloWorld'); }
$();
var $div = jQuery('div'); console.log($div); </script> </body>
|
2.2.3、解决方案二
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <body> <div>CSS</div> <script>
function $() { console.log('HelloWorld'); }
$();
var $$ = jQuery.noConflict();
var $div = $$('div'); console.log($div); </script> </body>
|