【ES6-ES12】新特性笔记(一)

ES6新特性

1. let关键字
变量不能重复声明(var可以重复声明,覆盖)
块级作用域
不存在变量提升
2.const关键字
声明常量,需要赋初值(一般常量大写)
常量值不能修改
块级作用域
对于数组和对象里的元素修改,不算对常量的修改不会报错
3.变量解构赋值
允许从数组和对象提取值,对变量赋值
-数组的解构
let [test1, test2] = arr;
-对象的解构
let { func } = objectEg;
4.模板字符串
新的声明字符串方式: 反引号 ``
特性:
-内容中可以直接出现换行符
let str = `<li>
				Animuss
			</li>`
-变量拼接
let name = 'Animuss';
let demo = `${name}嗨嗨嗨`;
5.简化对象写法
允许在大括号里直接写入变量和函数作为对象的属性和方法
let name = 'Animuss';
let change = function(){}
const demo = {
	name,
	change
}
6.箭头函数
()=>{}
特性:
-this是静态的,this始终指向函数声明时所在作用域下的this
-不能作为构造函数实例化对象
let Person = (name, age) => {
	this.name = name;
	this.age= age;
}
let me = new Person('jl', 20);
-不能使用 arguments 变量
7.函数默认值
-形参初始值
-与解构赋值结合
function connect({host, username}){

}
connect({
	host: 'localhost',
	username: 'xx'
})
8.rest参数
获取函数的实参,代替arguments,输出的是数组
function data(...args){}
data('还', '嗨');
-rest 参数必须放到最后
9.扩展运算符
... 将数组转换为 逗号分割的参数序列
-应用
--数组合并
--数组克隆
--转换伪数组
10.symbol
新的原始数据对象Symbol,独一无二的值,JS的第七种数据类型,类似字符串的数据类型
//USONB
//undefined、symbol、string、object、null、number、boolean
特点
-值唯一,解决命名冲突问题
-值不能与其他数据运算
-定义的对象属性不能用for..in循环遍历
let s = Symbol();
let s2 = Symbol('Animuss');	
let s3 = Symbol.for('Animuss');
场景
-给对象添加方法, 安全(避免重名)
let game = {}
let methods = {
	up: Symbol(),
	down: Symbol()
};
game[methods.up] = function(){};
-Symbol内置属性
11.迭代器Iterator
任何数据结构只要有Iterator接口(属性),就可以实验for..of循环
for(let i Of items) 输出的i是键值
for(let i in items) 输出的i是键名

原生具备iterator接口的数据:
-array、arguments、set、map、string、typedarray、nodeList

-原理:
1.创建一个指针对象,指向当前数据结构的起点
2.第一次调用对象的next方法,指针自动指向数据结构的第一个成员
3.不断调用next方法,指针后移,直到指向最后一个成员
4.每次调用next方法返回一个包含value和done属性的对象
12.生成器generator
异步编程
function* gen(){
	//分割, 分成几段,调一次next执行一段
	yield '嗨嗨嗨';
	//分割
	yield '老八'
}
let iterator = gem();
iterator.next();	//next执行生成器定义的方法,可以传入实参
13.Promise
es6引入的异步编程解决方案,构造函数
封装异步操作并获得成功或失败的结果
//实例化
const p = new Promise(function(reslove, reject){
	resolve();
	reject();
})
//调用then方法
p.then(function(value){
	//成功
}, function(reason){
	//失败
})
//catch 失败回调 相当于语法糖
p.catch(function(reason){})
14.set集合
类似数组,成员值唯一
let s = new Set();

方法:
.add
.delete
.has
.clear
15.Map键值对集合
键 - 各种类型的值都可以当作键
let m = new Map()

方法:
.set
.delete
.get
16.class类
class Phone(brand, price){
	this.brand = brand;
	this.price = price;
    
    call(){
    	console.log('call!')
    }
}
let iPhone = new Phone('iphone', 5299) 
17.数值扩展
-1.八进制和二进制
let o = 0b1010;

-2. Number.isFinite 是否为有限数

-3. Number.isNaN 是否为NaN

-4  Number.parseInt、parseFloat	字符串转整数

-6  Number.isInteger 是否为整数

-7  Math.trunc 抹掉小数部分

-8  Math.sign 判断数为正数负数零
18.对象方法扩展is、assign、set/getPrototypeof
-1. Object.is 判断两个值是否完全相等
判断两个NaN为true, ===会为false

-2. Object.assign 对象合并
Object.assign(Object1, Object2);
用2把1覆盖
如果对象的属性值为简单类型(string、number),则为深拷贝;
如果对象 属性值为对象或引用类型,则是j

-3. Object.setPrototypeOf 设置原型对象
	Object.getPrototypeOf 获取原型对象
19.模块化

import export

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值