上面代码我已加了注释,这里进一步解释。对于处理程序,是在被侦听的对象身上发生了相应事件之后,处理程序里面的方法就会被调用,上面例子中我们设置了set的处理函数,表明,如果我们侦听的对象的属性被更改,也就是被set了,那这个处理程序就会被调用,同时通过参数能够得知是哪个属性被更改,更改为了什么值。
Symbols
我们知道对象其实是键值对的集合,而键通常来说是字符串。而现在除了字符串外,我们还可以用symbol这种值来做为对象的键。Symbol是一种 基本类型,像数字,字符串还有布尔一样,它不是一个对象。Symbol 通过调用symbol函数产生,它接收一个可选的名字参数,该函数返回的symbol是唯一的。之后就可以用这个返回值做为对象的键了。Symbol还可以用来创建私有属性,外部无法直接访问由symbol做为键的属性值。
(function() { // 创建 symbol var key = Symbol("key"); function MyClass(privateData) { this[key] = privateData; } MyClass.prototype = { doStuff: function() { ...this[key]... } }; })(); var c = new MyClass("hello"); c["key"] === undefined //无法访问该属性,因为是私有的 Math,Number,String,Object 的新API 对Math,Number,String还有Object等添加了许多新的API。 // Number // 不同的两个Number之间的最小的差 Number.EPSILON // 判断是否是整数 Number.isInteger(Infinity) // false // 判断是否为非数字 Number.isNaN("NaN") // false // Math Math.acosh(3) // 1.762747174039086 Math.hypot(3,4) // 5 Math.imul(Math.pow(2,32)-1, Math.pow(2,32)-2) // 2 // String "abcde".contains("cd") // true "abc".repeat(3) // "abcabcabc" // Array // 将一个类数组对象或可迭代对象转换成真实的数组 Array.from(document.querySelectorAll('*')) // 将它的任意类型的多个参数放在一个数组里并返回 Array.of(1,2,3) // 将一个数组中指定区间的所有元素的值, 都替换成或者说填充成为某个固定的值 [0,0,0].fill(7,1) // [0,7,7] // 用来查找数组中某指定元素的索引, 如果找不到指定的元素, 则返回 -1 [1,2,3].findIndex(x => x == 2) // 1 // 返回一个 Array Iterator 对象,该对象包含数组中每一个索引的键值对 ["a","b","c"].entries() // iterator [0, "a"], [1,"b"], [2,"c"] // 返回一个数组索引的迭代器 ["a","b","c"].keys() // iterator 0, 1, 2 // 返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值 ["a","b","c"].values() // iterator "a", "b", "c" // Object Object.assign(Point, {origin: new Point(0,0)}) Promises Promises是处理异步操作的一种模式,之前在很多三方库中有实现,比如jQuery的deferred 对象。当你发起一个异步请求,并绑定了.when(), .done()等事件处理程序时,其实就是在应用promise模式。 // 创建 promise var promise = new Promise(function(resolve,reject) { // 进行一些异步或耗时操作 if(/*如果成功 */) { resolve("Stuff worked!"); } else { reject(Error("It broke")); } }); // 绑定处理程序 promise.then(function(result) { // promise成功的话会执行这里 console.log(result); // "Stuff worked!" }, function(err) { // promise失败会执行这里 console.log(err); // Error: "It broke" });
有关ES6的新特性就给大家介绍这么多,希望对大家有所帮助!
您可能感兴趣的文章: