美文网首页
ES6 摘要

ES6 摘要

作者: Lefter | 来源:发表于2017-06-03 15:13 被阅读11次

ES6 摘要

前端技术积累


  • for of 支持break continue 跳出循环
for(var item of "hello"){
    if(item =="l"){
        break
    }
    console.log(item)
}
//console.log => h e

for(var item of "hello"){
    if(item =="l"){
        continue
    }
    console.log(item)
}
//console.log => h e o
  • Map
let map = new Map([
    ['name', 'david'],
    [true, 'false'],
    [1, 'one'],
    [{}, 'object'],
    [function () {}, 'function']
]);
map.get('name'); // david
map.set('name', 'lefter');
map.get('name'); // lefter
map.has('name'); // true
map.delete("name") //true

for (let key of map.keys()) {
    console.log(typeof key);
    // > string, boolean, number, object, function
}

for (let [key, value] of map.entries()) {
    console.log(key, value);
}
  • promises
function getNumber(){
    var p = new Promise(function(resolve, reject){
        //做一些异步操作
        setTimeout(function(){
            var num = Math.ceil(Math.random()*10); //1-10的随机数
            if(num<=5){
                resolve(num);
            }
            else{
                reject('数字太大了');
            }
        }, 2000);
    });
    return p;            3`
}

getNumber()
.then(
      function(data){
        console.log('resolved');
        console.log(data);
          console.log(somedata); //此处的somedata未定义
    }, 
    function(reason, data){
        console.log('rejected');
        console.log(reason);
    }
)
.catch(function(reason){
    console.log('rejected');
    console.log(reason);
});
function requestImg(){
    var p = new Promise(function(resolve, reject){
        var img = new Image();
        img.onload = function(){
            resolve(img);
        }
        img.src = 'xxxxxx';
    });
    return p;
}

//延时函数,用于给请求计时
function timeout(){
    var p = new Promise(function(resolve, reject){
        setTimeout(function(){
            reject('图片请求超时');
        }, 5000);
    });
    return p;
}

Promise
.race([requestImg(), timeout()])
.then(function(results){
    console.log(results);
})
.catch(function(reason){
    console.log(reason);
});
  • Generator
function* sillyGenerator() {
    yield 1;
    yield 2;
    yield 3;
    yield 4;
}

var generator = sillyGenerator();
> console.log(generator.next()); // { value: 1, done: false }
> console.log(generator.next()); // { value: 2, done: false }
> console.log(generator.next()); // { value: 3, done: false }
> console.log(generator.next()); // { value: 4, done: false }
  • async
var asyncReadFile = async function () {
  var f1 = await readFile('/etc/fstab');
  var f2 = await readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
};

async函数返回一个 Promise 对象,可以使用then方法添加回调函数。当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。

async function getStockPriceByName(name) {
  var symbol = await getStockSymbol(name);
  var stockPrice = await getStockPrice(symbol);
  return stockPrice;
}

getStockPriceByName('goog').then(function (result) {
  console.log(result);
});
function timeout(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}

async function asyncPrint(value, ms) {
  await timeout(ms);
  console.log(value);
}

asyncPrint('hello world', 5000);
  • getter & setter
class Employee {
    constructor(name) {
        this._name = name;
    }
    get name() {
      if(this._name) {
        return 'Mr. ' + this._name.toUpperCase();  
      } else {
        return undefined;
      }  
    }
    set name(newName) {
      if (newName == this._name) {
        console.log('I already have this name.');
      } else if (newName) {
        this._name = newName;
      } else {
        return false;
      }
    }
}

var emp = new Employee("James Bond");
if (emp.name) {
  console.log(emp.name);  // Mr. JAMES BOND
}
emp.name = "Bond 007";
console.log(emp.name);  // Mr. BOND 007
  • getBoundingClientRect

"sortablejs": "git://github.com/RubaXa/Sortable.git#dev",

相关文章

  • ES6核心特性

    摘要: 聊JS离不开ES6啊 原文:ES6核心特性 作者:ljianshu 前言 ES6 虽提供了许多新特性,但我...

  • ES6 摘要

    ES6 摘要 前端技术积累 for of 支持break continue 跳出循环 Map promises G...

  • ES6 Generator 原理

    文章摘要 Generator 是 ES6 添加的一个特性,允许函数的暂停和恢复,本文使用 generator 构建...

  • 彻底弄懂ES6中的Map和Set

    摘要: 2个很有用的数据结构。 原文:彻底弄懂ES6中的Map和Set 作者:pubdreamcc Fundebu...

  • ES6标准入门 摘要 (Symbol)

    Symbol 原始数据类型Symbol,表示独一无二的值,Symbol 值通过Symbol函数生成。这就是说,对象...

  • ES6标准入门 摘要 (Proxy)

    Proxy Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此...

  • ES6标准入门 摘要 (Reflect)

    Reflect 概述 将Object对象的一些明显属于语言内部的方法(比如Object.definePropert...

  • ES6标准入门 摘要 (Promise)

    Promise 含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强...

  • ES6标准入门 摘要 (Iterator)

    Iterator JS现在表示“集合”的数据结构,就是Array、Object、Map、Set,用户可以组合使用它...

  • ES6标准入门 摘要 (Generator)

    基本概念 Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。 Gener...

网友评论

      本文标题:ES6 摘要

      本文链接:https://www.haomeiwen.com/subject/kwfmfxtx.html