深入理解Javascript |青训营笔记

68 阅读5分钟

深入理解Javascript

基本概念

  1. JS是单线程语言、属于弱类型的解释型语言
  2. 主要数据类型:

基础数据类型:null、undefined、number、Boolean、symbol、bigint、字符串 对象:数组、函数、Date

3.作用域(变量的可访问性和可见性):全局作用域、函数作用域、块级作用域 静态作用域:通过它就能够预测代码在执行过程中如何查找标识符 var——存在变量提升、function可以先访问再定义 4.JS执行流程 JS引擎解析到可执行代码片段——会开始执行上下文 uTools_1682402837807.png 可分为:全局执行上下文(开始即创建)、函数执行上下文(执行函数内代码会被编译) uTools_1682402996908.png 5. 垃圾回收 Javascript的V8引擎被限制了内存的使用,因此根据不同操作系统的内存大小会不一样。 V8引擎最初设计是作为浏览器的引擎,并未考虑占据过多的内存空间,随着web技术工程化的发展,占据了越来越多的内存空间。又由于被v8的会回收机制所限制,这样就引起了js执行的线程被挂起,会影响当前执行的页面应用性能。 垃圾回收算法:就是垃圾收集器按照固定的时间间隔,周期性地寻找那些不再使用的变量,然后将其清除或释放内存。

  • 标记清除
  • 引用计数
  • 分代式垃圾回收 V8 的垃圾回收策略主要基于分代式垃圾回收机制,V8 中将堆内存分为新生代和老生代两区域,采用不同的垃圾回收器也就是不同的策略管理垃圾回收 uTools_1682403242886.png 6.this指向问题——指向是动态的
  • 1:this永远指向一个对象;
  • 2:this的指向完全取决于函数调用的位置; 事件绑定共有三种方式:行内绑定、动态绑定、事件监听;

7.闭包 未定义直接用就会形成闭包

DOM,全称“Document Object Model(文档对象模型)”,它是由W3C定义的一个标准。

DOM操作,可以简单理解成“元素操作”。

DOM采用的是“树形结构”,用“树节点”形式来表示页面中的每一个元素。

我们在操作元素时,其实就是把这个元素看成一个对象,然后使用这个对象的属性和方法来进行相关操作

DOM节点共有12种类型,不过常见的只有3种(其他的不用管)。

  • (1)元素节点

0

  • (2)属性节点
  • (3)文本节点
  • 节点跟元素是不一样的概念,节点是包括元素的。
  • (1)一个元素就是一个节点,这个节点称之为“元素节点”。
  • (2)属性节点和文本节点看起来像是元素节点的一部分,但实际上,它们是独立的节点,并不属于元素节点。
  • (3)只有元素节点才可以拥有子节点,属性节点和文本节点都无法拥有子节点(它们求子多年,但仍未如愿)。

在JavaScript中,我们可以通过以下6种方式来获取指定元素。JavaScript是严格区分大小写的

  • (1)getElementById()通过id来选中元素document.getElementById("id名")
  • (2)getElementsByTagName()通过标签名来选中元素document. getElementsByTagName("标签名")
  • (3)getElementsByClassName()通过class来选中元素document. getElementsByClassName("类名")
  • (4)querySelector()和querySelectorAll()

querySelector()表示选取满足选择条件的第1个元素

querySelectorAll()表示选取满足条件的所有元素。

  • (5)getElementsByName()通过name属性来获取表单元素,只用于表单元素,一般只用于单选按钮和复选框。
  • (6)document.title和document.body
  • 由于一个页面只有一个title元素和一个body元素,因此对于这两个元素的选取,JavaScript专门为我们提供了两个非常方便的方法:document.title和document.body。

类数组只能用到两点:length属性;下标形式。

使用createElement()来创建一个元素节点,也可以使用createTextNode()来创建一个文本节点,然后可以将元素节点与文本节点“组装”成为我们平常所看到的“有文本内容的元素”。

在HTML中直接添加元素,这是静态方法。而使用JavaScript添加元素,这是动态方法。在实际开发中,使用静态方法是实现不了动画效果的。

如果想要创建一个元素,需要以下4步。

① 创建元素节点:createElement()

② 创建文本节点:createTextNode()

③ 把文本节点插入元素节点:appendChild()

④ 把组装好的元素插入到已有元素中:appendChild()

在JavaScript中,插入元素有以下2种方法。

使用appendChild()把一个新元素插入到父元素的内部子元素的 末尾 。A.appendChild(B);

oBtn.onclick = function() {

……

};

使用insertBefore()方法将一个新元素插入到父元素中的某一个子元素“之前”。

A.insertBefore(B,ref);ref表示指定子元素,在这个元素之前插入新子元素。

appendChild()是在父元素最后一个子元素后面插入;而insertBefore()是在父元素任意一个子元素之前插入。这样使得我们可以将新元素插入任何地方。

v

使用removeChild()方法来删除父元素下的某个子元素。A.removeChild(B);

使用cloneNode()方法来实现复制元素。obj.cloneNode(bool)

使用replaceChild()方法来实现替换元素。A.replaceChild(new,old);A表示父元素,new表示新子元素,old表示旧子元素。