ES6简明教程

介绍

ECMAScript 6 目前基本成为业界标准,它的普及速度比 ES5 要快很多,主要原因是现代浏览器对 ES6 的支持相当迅速,尤其是 Chrome 和 Firefox 浏览器,已经支持 ES6 中绝大多数的特性

let、const 和 block 作用域

let允许创建块级作用域,ES6 推荐在函数中使用 let 定义变量,而非 var:
同样在块级作用域有效的另一个变量声明方式是 const,它可以声明一个常量。ES6 中,const 声明的常量类似于指针,它指向某个引用,也就是说这常量并非一成不变的。如
{

const ARR = [5,6];
ARR.push(7);
console.log(ARR); // [5,6,7]
ARR = 10; // TypeError
}
1)let 关键词声明的变量不具备变量提升(hoisting)特性
2)let 和 const 声明只在最靠近的一个块中(花括号内)有效
3)当使用常量 const 声明时,请使用大写变量,如:CAPITAL_CASING
4)const 在声明时必须被赋值

箭头函数(Arrow Functions)

var getPrice = function() {
return 4.55;
};

// Implementation with Arrow Function
var getPrice = () => 4.55;
箭头函数采用了简洁函数体,它不需要 return 语句

函数参数默认值

ES6中允许你对函数参数设置默认值

对象和数组解构

解构可以避免在对象赋值时产生中间变量:
数组解构赋值
let [a,b,c] = [“wc”,“xq”,“z3”];
console.log(a)
console.log(b)
console.log©

 简单对象解构赋值
 let { name,age } = {name:"wangcai",age:100}
 console.log(name)
 console.log(age)

 两侧的键要保持一样
 let { a,b } = {name:"wangcai",age:100}
 console.log(a)
 console.log(b)

 复杂对象解构赋值
 var film = {
    name:"战狼",
   score:9.0,
    star:["吴京1","吴京2","吴京3"],
   history:[
       {name:"wangcai",age:100},
     ]
 }

对象超类

ES6 允许在对象中使用 super 方法:
var parent = {
foo() {
console.log(“Hello from the Parent”);
}
}

var child = {
foo() {
super.foo();
console.log(“Hello from the Child”);
}
}

Object.setPrototypeOf(child, parent);
child.foo(); // Hello from the Parent
// Hello from the Child

Set 和 WeakSet

Set 对象是一组不重复的值,重复的值将被忽略,值类型可以是原始类型和引用类型:
let mySet = new Set([1, 1, 2, 2, 3, 3]);
mySet.size; // 3
mySet.has(1); // true
mySet.add(‘strings’);
mySet.add({ a: 1, b:2 });
可以通过 forEach 和 for…of 来遍历 Set 对象:
mySet.forEach((item) => {
console.log(item);
// 1
// 2
// 3
// ‘strings’
// Object { a: 1, b: 2 }
});

for (let value of mySet) {
console.log(value);
// 1
// 2
// 3
// ‘strings’
// Object { a: 1, b: 2 }
}
Set 同样有 delete() 和 clear() 方法。

WeakSet
类似于 WeakMap,WeakSet 对象可以让你在一个集合中保存对象的弱引用,在 WeakSet 中的对象只允许出现一次:

var ws = new WeakSet();
var obj = {};
var foo = {};

ws.add(window);
ws.add(obj);

ws.has(window); // true
ws.has(foo); // false, foo 没有添加成功

ws.delete(window); // 从结合中删除 window 对象
ws.has(window); // false, window 对象已经被删除

ES6 中有 class 语法。值得注意是,这里的 class 不是新的对象继承模型,它只是原型链的语法糖表现形式。

函数中使用 static 关键词定义构造函数的的方法和属性:

Symbol

Symbol 是一种新的数据类型,它的值是唯一的,不可变的。ES6 中提出 symbol 的目的是为了生成一个唯一的标识符,不过你访问不到这个标识符:

var sym = Symbol( “some optional description” );
console.log(typeof sym); // symbol
注意,这里 Symbol 前面不能使用 new 操作符。

如果它被用作一个对象的属性,那么这个属性会是不可枚举的:

var o = {
val: 10,
[ Symbol(“random”) ]: “I’m a symbol”,
};

console.log(Object.getOwnPropertyNames(o)); // val
如果要获取对象 symbol 属性,需要使用Object.getOwnPropertySymbols(o)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值