ECMAScript6学习之三

1、展开运算符(spread (…) operator)

以前我们把某一个方法作为某一个对象的方法调用时,方法如下:

    function ecma(x, y, z) {
         alert('x:' + x + ", y=" + y + ', z=' + z);
 }
var args = [0, 1, 2];
ecma.apply(null, args);

有了ECMAScript6就可以变成如下形式了,

    function ecma(x, y, z) {
     alert('x:' + x + ", y=" + y + ', z=' + z);
}
var args = [0, 1, 2];
ecma(...args);

当然也可以展开多个,如下:
function ecma(v, w, x, y, z) {
     alert('x:' + x + ", y=" + y + ', z=' + z);
}
var args = [ 1, 2];
ecma(1,...args,...args);

更好的push方法,先看原来的实现方法,将一个数组的元素放进另外一个数组中

    var orginal = [1,2];
var target = [4,5];
Array.prototype.push.apply(target,orginal);

note:自己可以试下target.push(orginal);

现在的实现如下:

    var target = [0, 1, 2];
var orginal = [3, 4, 5];
target.push(...orginal);

还可以将类数组转换为数组,如[...nodeList]

2、class,super,object literal extensions, template string,RegExp “y” and “u” flags, defined array各浏览器都未实现

3、2进制和8进制数据

二进制整数: 0b010101 或 0B010101; 八进制整数: 0o7170 或 0O7170

4、Map && weakMap

(1)Map

在java中,Map集合是我们最常用的元素,key-value方式是我们组织数据比较方便的形式,ES6中也引入了Map元素,但是js中的key和value可以是些特殊的值,比如说0、NaN。

var map = new Map();
map.set('key','1111');
map.get('key');
myMap.set(NaN, "not a number");
myMap.get(NaN); // "not a number"
myMap.set(0, "正零");
myMap.set(-0, "负零");
myMap.get(-0); // "负零"
myMap.get(0);  // "正零"

当然,value值还可以是更加复杂的结构,例子如下:
var map = new Map();
var obj = {
name : 'Eason',
say : function(){
    alert('aaa');
      }
};
map.set('key2',obj);
var o = map.get("key2");
o.say()

当然了,你可以继续往map对象中set值,你也查看map对象的size,可以使用map.size.需要注意的是,在FF18及其以前的版本中需要使用 map.size(),清理map内的所有内容使用map.clear(),判断map中是否有相应的key值使用map.has(‘key’);

(2)weakMap

WeakMap对象就是简单的键/值映射.但键只能是对象值,不可以是原始值.

5、Set

一个Set对象允许你向里面存储任意类型的唯一值(不能重复), 不管是原始值还是对象值

var mySet = new Set();
mySet.add(1);
mySet.add(5);
mySet.add(“some text”);
mySet.has(1); // true
mySet.has(3); // false, 3没有被添加进这个set中
mySet.has(5); // true
mySet.has(Math.sqrt(25)); // true
mySet.has(“Some Text”.toLowerCase()); // true

mySet.size; // 3

mySet.delete(5); // 从这个set中删除5
mySet.has(5); // false,5已经被删除了

mySet.size; // 2, 刚刚删除了一个元素

// 遍历set中的元素
for (let item of mySet)
console.log(item); // 按顺序打印出: 1, “some text”

// 将一个set转换成数组
var myArr = [v for (v of mySet)]; // [1, “some text”]

// 如果运行在一个HTML文档中,下面的代码也能正常工作
mySet.add(document.body);
mySet.has(document.querySelector(“body”)); // true
这次就到这里,有问题请留言!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值