目录
前言
开篇语
准备工作
$ 拷贝
浅拷贝和深拷贝
节点拷贝
$ 遍历
结束语
前言
开篇语
本系列博客主要分享JavaScript的进阶语法知识,本期为第三期,主要分享的内容为:jQuery拷贝和遍历。
从进阶部分开始,我们将脱离原生的JS,使用一些包装的第三方库来完成我们的需求。这些JS库需要在文档的开头引入,暂时的引入格式为script标签加src地址。
与基础部分的语法相比,进阶部分的语法会有较大的差别,注意最好不要混用原生方法与第三方库内容,以免出现不必要的麻烦。
准备工作
软件:【参考版本】Visual Studio Code
插件(扩展包):Open in browser, Live Preview, Live Server, Tencent Cloud AI Code Assistant, htmltagwrap
提示:在不熟练的阶段建议关闭AI助手
第三方JS库:jquery.min.js
提示:请站内搜索下载、引入方式
浏览器版本:Chrome
系统版本: Win10/11/其他非Windows版本
$ 拷贝
浅拷贝和深拷贝
根据变量类型的不同,复制变量通常有两种方式—— 浅拷贝和深拷贝。
就浅拷贝而言,它的形式上类似下面这样——
var a = 'aaa'
var b = a
它只能复制栈内存中的内容,于是在复制时会出现下面两种状况——
- 对于字面量类型的数据,由于它只存储在栈内存中,所以直接复制本身
- 而对于引用类型的数据,栈内存里只存储堆内存中实际存储数据的地址,所以实质上是地址被复制了,两个变量实际上还是在对同一组数据进行操作
如果想要真正复制引用类型的数据,则需要使用深拷贝,即将堆内存中的数据复制一份,存到新的地址中。
$提供的深拷贝方法形式如下——
$.extend(true, targetObj, obj)
可以实现把obj复制一份新的数据,存储到targetObj中。该方法需要使用最高级节点$调用。
节点拷贝
$提供了将元素节点拷贝的方法clone(),又叫节点克隆。该方法直接返回复制之后的新节点。
如果不填参数,则只复制元素节点,不复制该节点绑定的事件。
填写参数true,则新的节点还可以具有原节点绑定事件。
$ 遍历
之前我们知道,对一个元素进行遍历,有三种方式——for-i,for-in,for-of。
比如,我们对一个数组元素arr进行遍历,可以这么做——
for (var i = 0; i < arr.length; i++) { } // i为索引
for (var i in arr) { } // i为索引
for (var item of arr) { } // item为元素
现在,$也提供了一种遍历方法each(),该方法由最高级节点$调用。
采用该方式遍历数组,类似下面的格式——
$.each(arr, function(i, item) { })
其中i为索引,item为元素。
当然,该方式也可以用于遍历对象,类似下面的格式——
$.each(obj, function(key, value) { })
其中key为属性,value为值。
结束语
本期内容到此结束。关于本系列的其他博客,可以查看我的JS进阶专栏。
在全栈领域,博主也只不过是一个普通的萌新而已。本系列的博客主要是记录一下自己学习的一些经历,然后把自己领悟到的一些东西总结一下,分享给大家。
文章全篇的操作过程都是笔者亲自操作完成的,一些定义性的文字加入了笔者自己的很多理解在里面,所以仅供参考。如果有说的不对的地方,还请谅解。
==期待与你在下一期博客中再次相遇==
——临期的【H2O2】