Js 高级语法
🍹 JavaScript高级语法包括异步编程、模块化、高阶函数、装饰器、生成器、对象解构等,提升代码可读性和管理复杂性。
1 JSON
- JSON
- JavaScript Object Notation,即JavaScript对象标记法,一种存储和交换数据的语法。
- 当数据在浏览器与服务器之间进行交换时,这些数据只能是文本形式,而JSON属于文本。
- JavaScript对象与JSON可互相转换,将数据作为JavaScript对象来处理,无需复杂的解析。
- JSON中,每一个数据项都是由一个键值对组成的,但键必须是字符串并且由双引号包围。
- 值必须是字符串、对象、数组、布尔、null数据类型之一。
- 而JSON值不可以是函数、日期、undefined数据类型之一。
1 |
|
2 AJAX
- AJAX
- 即Asynchronous Javascript And XML,一种用于创建快速动态网页的技术。
- 核心是XMLHttpRequest对象,所有现代浏览器都支持XMLHttpRequest对象。
- 通过在后台与服务器进行少量的数据交换,从而使网页实现异步更新。
- 即:可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
- 查看页面是否使用AJAX技术的方法
- F12>Network>查看请求类型为XHR或Fetch的请求。
- 在页面源代码处搜索XMLHttpRequest或fetch关键字。
1 |
|
2-1 Get请求
1 |
|
2-2 Post请求*
1 |
|
2-3 请求整合
1 |
|
2-4 users.json
1 |
|
3 Cookie*
- Cookie
- Cookie是一些数据,存储在电脑的文本文件中。
- 当用户访问web页面时,客户端的用户信息可以记录在Cookie中。
- 在用户下一次访问该页面时,可以在Cookie中读取用户访问记录。
- JavaScript使用
document.cookie
属性来创建 、读取、删除Cookie。
1 |
|
4 Closure
- Closure
- 闭包是能够读取其他函数内部变量的函数,本质上就是将函数内部和函数外部连接起来。
- 当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时,就产生了闭包。
- 作用:读取函数内部的变量、让这些变量的值始终保持在内存中。
1 |
|
4-1 生命周期
- 生命周期
- 产生:在嵌套内部函数定义执行完时就产生了。
- 死亡:在嵌套的内部函数成为垃圾对象时死亡。
1 |
|
4-2 闭包应用
- 闭包应用
- 具有特定功能的Js文件,模块的使用只需通过模块暴露的对象调用方法来实现对应的功能。
- 只向外暴露一个包含n个方法的对象或函数,将所有数据和功能都封装在一个函数内(私有)。
(1) return
1 |
|
(2) window
1 |
|
(3) 第n个按钮
1 |
|
5 Exception
- Exception
- 当错误发生时,JavaScript提供了错误信息的内置error对象,error对象包含两个属性。
- Error对象属性:name设置或返回错误名、message设置或返回错误消息(一条字符串)。
- name属性可返回的值
- TypeError(已发生类型错误)、URIError(在encodeURI()中已发生的错误)。
- SyntaxError(已发生语法错误)、EvalError(已在eval()函数中发生的错误)。
- ReferenceError(已发生非法引用)、RangeError(已发生超出数字范围的错误)。
- try-catch语句是JavaScript中处理异常的标准方式,也提供了finally语句。
- try语句不发生错误,catch语句不执行,finally语句一定执行。
- try语句发生错误,则执行catch语句,finally语句也一定执行。
5-1 try-catch
1 |
|
5-2 EvalError
1 |
|
5-3 URIError
1 |
|
5-4 TypeError
1 |
|
5-5 RangeError
1 |
|
5-6 SyntaxError
1 |
|
5-7 ReferenceError
1 |
|
5-8 throw内置的异常
1 |
|
5-9 throw自定义异常
1 |
|
6 WebStorage
- WebStorage
- HTML5中本地存储的解决方案之一,但并非为了取代Cookie而制定。
- 在于解决本不应Cookie做,却不得不用Cookie本地存储的应用场景。
- 分类
- sessionStorage将数据保存在session中,浏览器关闭也就没有了。
- localStorage一直将数据保存在客户端本地,两者使用的API相同。
- localStorage和sessionStorage只能存储字符串类型,低版本IE使用json2.js。
- 复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理。
6-1 localStorage
- localStorage
- 在本地永久性存储数据,除非显式地将其删除或清空。
- 常见方法
- 保存单个数据:
localStorage.setItem(key,value);
。 - 读取单个数据:
localStorage.getItem(key);
。 - 删除单个数据:
localStorage.removeItem(key);
。 - 删除所有数据:
localStorage.clear();
。 - 获取某个索引的key:
localStorage.key(index);
。
- 保存单个数据:
1 |
|
6-2 sessionStorage
- sessionStorage
- sessionStorage对象存储当前窗口或标签页的数据,这些数据可跨越页面刷新而存在。
- 一旦窗口或标签页被永久关闭,那么所有通过sessionStorage存储的数据也将被清空。
- sessionStorage对象绑定于某个服务器会话,所以当文件在本地运行时则是不可用的。
- 存储在sessionStorage中的数据只能由最初给对象存储数据的页面访问到,对多页面应用有限制。
- 常见方法
- 保存单个数据:
sessionStorage.setItem(key,value);
。 - 读取单个数据:
sessionStorage.getItem(key);
。 - 删除单个数据:
sessionStorage.removeItem(key);
。 - 删除所有数据:
sessionStorage.clear();
。 - 获取某个索引的key:
sessionStorage.key(index);
。
- 保存单个数据:
1 |
|
7 JavaScript新特性
- JavaScript新特性
- JavaScript作为一种不断发展的语言,不同版本引入了许多新特性。
- ES5(2009),启用严格模式,增强代码安全性,原生支持JSON格式。
- ES6(2015),let和const关键字的引入,简化函数语法等(主要介绍)。
- ES7(2016)、ES8(2017)、ES9(2018)、ES10(2019)、ES11(2020)等。
- ECMAScript官网可查发布的新功能:https://ecma-international.org/。
7-1 关键字
1 |
|
7-2 迭代器
- 迭代器
- Iterator,为各种不同的数据结构提供统一访问机制的接口。
- 任何数据结构只要部署Iterator接口,就可以完成遍历操作。
1 |
|
7-3 rest参数
1 |
|
7-4 简化对象
1 |
|
7-5 箭头函数
1 |
|
7-6 解构赋值
- 解构赋值
- 从数组和对象中提取值,对变量进行赋值,被称为解构赋值。
- 频繁使用对象方法、数组元素,就可以使用解构赋值的形式。
1 |
|
7-7 模板字符串
1 |
|
7-8 扩展运算符
1 |
|
7-9 Symbol类型
- Symbol类型
- JavaScript的第七种数据类型,是一种类似于字符串的数据类型。
- Symbol的值是独一无二的,用于解决命名冲突的问题,并且不能与其他数据进行运算。
- 定义的对象属性不能用
for...in
循环遍历,用Reflect.ownKeys
获取对象的所有键名。 - 内置值(即魔术方法)
- Symbol.species:创建衍生对象时,使用该属性。
- Symbol.match:执行
str.match(myObject)
时,如果属性存在则调用。 - Symbol.split:对象被
str.split(myObject)
调用时,返回该方法的返回值。 - Symbol. toStringTag:对象上面调用toString方法时,返回该方法的返回值。
- Symbol.search:对象被
str.search (myObject)
调用时,返回该方法的返回值。 - Symbol.replace:对象被
str.replace(myObject)
调用时,返回该方法的返回值。 - Symbol. unscopables:对象指定使用with关键字时,判断属性将会被with环境排除。
- Symbol.iterator:对象进行
for...of
循环时调用该方法,返回该对象的默认遍历器。 - Symbol.hasInstance:其他对象使用instanceof运算符,判断是否为该对象的实例时调用。
- Symbol.isConcatSpreadable:对象用于
Array.prototype.concat()
时,判断是否可以展开。 - Symbol.toPrimitive:对象被转为原始类型的值时调用该方法,返回该对象对应的原始类型值。
1 |
|
Js 高级语法
https://stitch-top.github.io/2024/09/13/web/web01-javascript/javascript06-js-gao-ji-yu-fa/