代做网站公司/网络推广有几种方法
先浅复习一下es6
let与const
作⽤域 全局作⽤域
局部作⽤域
块级作⽤域
let ⽤法:声明⼀个变量
特点: 只在声明的代码块内有效
在同⼀作⽤域内不允许重复声明
没有变量提升
暂时性死区
用法:声明一个只读的变量(可理解为常量)
特点:同let命令
简单类型如字符串、数字和布尔值,值就保存在变量指向的内存地址。而复杂类型的数据如对象、数组和函 数,变量指向的内存地址,实际上是保存了指向实际数据的指针。所以const 只能保证指针是固定的,至于指针指向的数据结构变不变就无法控制了,
ES6之前JavaScript的数据类型
Number(数字)
String(字符串)
Boolean(布尔值)
Object( 对 象 )
Null(空对象指针)
Undefined(声明的变量未被初始化时)
数据类型Symbol
es6引入Symbol这种新的原始数据类型确保创建的每个变量都是独一无二的
解构赋值
举例:
{let a,b,c[a,b,c]=[1,2]console.log(a,b,c)//1,2,undefined
}
对象解构
字符串解构
布尔值解构
函数参数解构
数值解构
ES6新增的内置对象
ES6提供的新的字符串方法及模板字符串
方法 | 描述 |
---|---|
includes(string, position) | 判断字符串中是否包含指定字符串,返回值是布尔值 |
startsWith(string, position) | 判断字符串的开头是否包含指定字符串,返回值是布尔值 |
endsWith(string, position) | 判断字符串的尾部是否包含指定字符串,返回值是布尔值 |
repeat(n) | repeat() 方法返回一个新字符串,表示将原字符串重复n 次。 |
字符串补全 | 第一个参数是补全后的字符串长度,第二个参数是用于补全的字符串 |
padStart(length, str) | 用于头部补全 |
padEnd(length, str) | 用于尾部补全 |
模板字符串
const name="⼩明"constage=18
const hobbies="游泳、跑步和打篮球"
// ES5写法
const str1='我的名字是'+name+',我今年'+age+'岁,我喜欢'+hobbies
console.log(str1)
// ES6写法
const str2=`我的名字是${name},我今年${age}岁,我喜欢${hobbies}`
console.log(str2)
模板字符串中的${. .. } 大括号内部可以放入任意的 JavaScript 表达式,可以进行运算、可以引用对象属性、可以调用函数、可以甚至还能嵌套,甚至还能调用自己本身
内置API
属性/方法 | 作用 | 例子 |
---|---|---|
size | 返回键值对的数量 | m.size |
clear() | 清除所有键值对 | m.clear() |
has(key) | 判断键值对中是否有指定的键名,返回值是布尔值 | m.has(key) |
get(key) | 获取指定键名的键值对,如不存在则返回 undefined | m.get(key) |
set(key, value) | 添加键值对,如键名已存在,则更新键值对 | m.set(key, value) |
delete(key) | 删除指定键名的键值对 | m.delete(key) |
Set是ES6给开发者提供的一种类似数组的数据结构,可以理解为值的集合。它和数组的最大的区别就在于: 它的值不会有重复项。
//创建
let set = newSet();
let set2 = newSet([1,2,3])
//添加元素
set.add(1)
ES6中的代理Proxy和反射Reflect
Proxy
概述
正如Proxy的英译"代理理"所示,Proxy是ES6为了操作对象引入的API。它不直接作用在对象上,而是作为一种媒介,如果需要操作对象的话,需要经过这个媒介的同意。
target:⽤Proxy包装的⽬标对象
** handler:⼀个对象,对代理对象进⾏拦截操作的函数,如set、get*/
let p = newProxy(target,handler)
Reflect
概述
与Proxy相同,ES6引入Reflect也是用来操作对象的,它将对象里一些明显属于语言内部的方法移植到Reflect对象上,它对某些方法的返回结果进行了修改,使其更合理,并且使用函数的方式实现了Object的命令式操作
箭头函数
特点
更短的函数
不绑定this
注意事项
什么情况下用箭头函数
箭头函数没有argument
传统的javascript中只有对象,没有类的概念。它是基于原型的面向对象语言。原型对象特点就是将自身的属性共享给新对象。
new操作做了什么事
返回(产生)了一个新的对象
将这个空对象的_ proto_指向了了构造函数内部的prototype
将构造函数的this绑定到这个对象上(即new创建的对象,其函数体内的this指向的是这个对象)
返回到这个新对象上
es6 class的概念
定义类
类的继承
子类向父类传递参数
静态方法
静态属性
异步编程
什么是同步
当一个"调用"发出时,在没有得到结果之前,这个"调用"就会阻塞后面代码的执行,得到结果的时候才会返回。换句话说,"调用者"要主动等待代码的执行结果,得到返回结果后,程序才会继续运行。
什么是异步
"调用"发出的时候,就直接返回了,对应的结果会通过状态、通知来告诉"调用者"或通过回调函数处理这个调用。异步调用发出后,不会阻塞后面的代码。
JavaScript中为什么要引入异步这个概念
JavaScript是单线程的
同步代码会阻塞后面的代码
异步不会阻塞程序的运行
JavaScript中异步的实现
回调函数
setInterval和setTimeout
Promise
Generator
async
Promise的概念及其原理
为了解决"回调地狱"的问题,提出了Promise对象
Promise是一个对象,也可以说是一种编程思想。应用的场景就是"当xxx执行完毕的时候,then执行xxx动作"。Promise里不仅可以存放着异步的代码,也可以放同步的代码。
Promise的使用
封装一个Promise
捕获异常
Promise.all方法
Promise.race
Iterator及其作用和与for…of循环的关系
Iterator(遍历器)是一种接口,目的是为了给不同的数据结构提供统一的循环方式,任何数据结构如果部署了Iterator接口,就能够实现遍历的操作
Iterator的作用
为不同的数据结构,提供一个统一的、简便的访问接口
将数据成员按照一定的顺序输出
提供给ES6中的for…of的这个循环语句进行使用
具备原生的Iterator接口
Array
String
Set
Map
函数的argument对象
Generator函数
什么是Generator
用于生成一个迭代器Iterator
next()
yield
async
什么是async
async是异步的简写,用于声明一个函数是异步函数