经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » jQuery » 查看文章
详解jQuery的拷贝对象
来源:jb51  时间:2021/11/22 13:42:03  对本文有异议

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <script src="jquery.min.js"></script>
  9. <script>
  10. $(function() {
  11. //1, 普通拷贝,默认为浅拷贝
  12. var targetObj = {};
  13. var obj = {
  14. id: 1,
  15. name: "andy"
  16. };
  17. $.extend(targetObj, obj); //拷贝语法,把obj内的属性和属性值拷贝给targetObj一个空对象
  18. console.log(targetObj); //输出结果是 obj对象里面的内容
  19. //2. 拷贝对象里面有属性和属性值情况下
  20. var targett = {
  21. id: 0,
  22. gshg: 55
  23. };
  24. var objrr = {
  25. id: 1,
  26. name: "andy"
  27. };
  28. $.extend(targett, objrr);
  29. console.log(targett); // 如果拷贝对象targett里面属性和被拷贝对象objrr里面属性有相同的,则objrr里面属性值会覆盖掉targett里面属性值
  30. //如果拷贝对象targett里面有属性与被拷贝对象objrr里面属性名不相同的不会被覆盖,被拷贝对象objrr里面属性只会后来居上
  31. //3. 拷贝对象里面有对象情况下,浅拷贝
  32. var taytuj = {
  33. id: 0,
  34. msg: {
  35. sex: '男'
  36. }
  37. };
  38. var rete = {
  39. id: 1,
  40. name: "andy",
  41. msg: {
  42. age: 18
  43. }
  44. };
  45. $.extend(true, taytuj, rete);
  46. console.log(taytuj);
  47. // 执行过程:
  48. //1.两个对象都在内存栈中,其中rete对象里面的 msg: { age: 18 }对象放在了内存堆中,在浅拷贝中,rete对象里面的 msg: { age: 18 }会覆盖掉taytu对象的msg: {sex: '男' },属性值会变成一个16进制指向内存堆中的msg: { age: 18 }对象,此时栈空间中两个对象的 msg里面都有同一个执向内存堆中msg: { age: 18 }的16进制地址,所以如果浅拷贝完成后,两个对象里面msg属性值只要一个发生了改变,另外一个msg的属性值也会随着一起改变
  49. //浅拷贝:
  50. //1.属性名相同的,被拷贝对象会覆盖掉拷贝对象,排序永远是后来居上
  51. //2. 属性名不相同的则合并
  52. //深拷贝:
  53. //1.属性名相同的,被拷贝对象的属性和属性值会覆盖掉拷贝对象的属性和属性值,排序永远是后来居上
  54. //2. 属性名不相同的则合并
  55. //3.拷贝对象和拷贝对象里面有对象的,如果对象名相同,属性名不同,则会合并,并不是覆盖。
  56. })
  57. </script>
  58. </head>
  59. <body>
  60. </body>
  61. </html>

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注w3xue的更多内容!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号