类和对象

基本定义:

class Parent{
constructor(name='lmx'){ //name= 默认值
this.name=name
}
}
let v_parent = new Parent('v');
console.log(v_parent);
//输出Parent {name: "v"}

继承

class Parent{
constructor(name='lmx'){
this.name=name
}
}
class Child extends Parent{
constructor(name=’child’){
super(name); //如果super中没有参数则都按照父类的默认值
}
}
console.log(new Child())

getter和setter

class Parent{
constructor(name='lmx'){
this.name=name
}
}
get longName(){
return ‘mk’+this.name;
}
set longName( val){
this.name = val
}
let v = new Parent();
console.log(v.longName()) //调用get方法
v.longName = ‘hello’ //调用set方法
console.log(v.longName())

静态方法:static定义的是类的方法只有类能调用

class Parent{
constructor(name='lmx'){
this.name=name
}
static tell(){
console.log(‘tell’)
}
Parent.tell()
}

静态属性:

ES6明确规定,Class内部只有静态方法,没有静态属性,但是可以通过  类名.变量  来定义

class Parent{
constructor(name='lmx'){
this.name=name
}
}
Parent.abc=’123’

Promise

Promise.all([ ]).then() 表示把多个Promise实例当做一个Promise实例,当所有Promise实例状态发生改变之后,新的Promise才能发生改变,即当三个loadImg实例都加载完之后才会触发Promise.all方法,才会then,才执行showImg

//所有图片加载完了之后才一起显示
function loadImg(src){
  return new Promise((resolve,reject)=>{
    let img = document.createElement('img');
    img.src= src;
    img.onload = function(){ resolve(img) };
    img.onerror = function(){ reject(err)}
  })
}
function showImg(imgs){
  imgs.forEach(item=>{
    document.body.appendChild(item)
})
};
Promise.all([
  loadImg('http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg'),
  loadImg('http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg'),
  loadImg('http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg')
]).then(showImg)

Promise.race ([ ]).then()  多个实例中有一个状态率先改变之后,race实例会改变,其他的便忽略不管了

//只要有图片加载出来了就显示
function loadImg(src){
  return new Promise((resolve,reject)=>{
    let img = document.createElement('img');
    img.src= src;
    img.onload = function(){ resolve(img) };
    img.onerror = function(){ reject(err)}
  })
}
function showImg(imgs){
  imgs.forEach(item=>{
    document.body.appendChild(item)
  })
};
Promise.race([
  loadImg('http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg'),
  loadImg('http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg'),
  loadImg('http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg')
]).then(showImg)

Iterator接口

在数组中的应用

let arr = ['hello','world'];
let map = arr[Symbol.iterator]();
console.log(map.next());
console.log(map.next());
console.log(map.next());
//输出,done变为true之后循环截止

自定义iterator接口

for...of循环

let obj = {
  start:[3,5,6],
  end:[4,8,9],
  [Symbol.iterator](){ //iterator小写
    let self= this;
    let index = 0;
    let arr = self.start.concat(self.end);
    let len = arr.length;
    return{
      next(){
        if(index<len){
          return {
            value:arr[index++],
            done:false}
        }else{
          return {
            value:arr[index++],
            done:true
          }
        }
      }
    }
  }
} ;
for(let key of obj){
  console.log(key)
}

ES6语法 Promise Iterator的更多相关文章

  1. ES6语法 promise用法

    ES6语法 promise用法 function doSomething(){ return new Promise((resolve,reject)=>{ resolve('jjjj');// ...

  2. es6 语法 (iterator和for...of循环)

    Iterator遍历器 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据 ...

  3. ES6语法——Promise对象

    一.概念 Promise是异步编程的一种解决方案(解决回调地狱的问题),是一个能够获取异步操作信息的对象.Promise的内部保存着某个未来才会结束的事件(通常是一个异步操作) 二.特点 1.Prom ...

  4. vuex+Es6语法补充-Promise

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,采用 集中式存储管理 单页面的状态管理/多页面状态管理 使用步骤: // 1.导入 import Vuex from 'vuex' // ...

  5. ES6语法知识

    let/const(常用) let,const用于声明变量,用来替代老语法的var关键字,与var不同的是,let/const会创建一个块级作用域(通俗讲就是一个花括号内是一个新的作用域) 这里外部的 ...

  6. ES6之Promise用法详解

    一 前言 本文主要对ES6的Promise进行一些入门级的介绍.要想学习一个知识点,肯定是从三个方面出发,what.why.how.下面就跟着我一步步学习吧~ 二 什么是Promise 首先是what ...

  7. 常用的ES6语法

    1. let.const 和 block 作用域 let 允许创建块级作用域,ES6 推荐在函数中使用 let 定义变量,而非 var: var a = 2; { let a = 3; console ...

  8. 把JavaScript代码改成ES6语法不完全指南

    目录 * 核心例子 * 修改成静态变量(const)或块级变量(let) * 开始修改 * 疑问解释(重复定义会发生什么) * 疑问解释(let的块级作用域是怎样的) * 疑问解释(const定义的变 ...

  9. 在Node中使用ES6语法

    Node本身已经支持部分ES6语法,但是import export,以及async await(Node 8 已经支持)等一些语法,我们还是无法使用.为了能使用这些新特性,我们就需要使用babel把E ...

随机推荐

  1. (原创)cocos lua 热更新从零开始(一)最简单demo

    开发环境:WIN7 + cocos2dx 3.10 lua版本 0.学习这篇内容的基础是你要会创建并运行一个cocos lua项目 1.热更新的思想所谓的热更新,就是在线更新代码和资源.热更新的过程首 ...

  2. 【sklearn】中文文档

    看不见的叫做远方 飞机票 分类   回归     聚类 降维   模型选择  预处理

  3. iOS开发多线程之GCD

    Grand Central Dispatch(GCD)是异步执行任务的技术之一.一般将应用程序中记述的线程管理用的代码在系统级中实现.开发者只需要定义想执行的任务并追加到适当的Dispatch Que ...

  4. 剑指offer数组1

    面试题3:数组中重复的数字 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例 ...

  5. tensorflow+ssd_mobilenet实现目标检测的训练

    本文在Ubuntu下使用tensorflow的object detection API来训练自己的数据集.所用模型为ssd_mobilenet,也可以使用其他的模型.当然也可以在windows下训练, ...

  6. [转] 如何写好.babelrc?Babel的presets和plugins配置解析

    什么是Babel The compiler for writing next generation JavaScript. 官网是这么说的,翻译一下就是下一代JavaScript 语法的编译器. 作为 ...

  7. Python3-Cookbook总结 - 第一章:数据结构和算法

    第一章:数据结构和算法 Python 提供了大量的内置数据结构,包括列表,集合以及字典.大多数情况下使用这些数据结构是很简单的. 但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题. ...

  8. ASP.NET Core 3.0预览版体验

    目前.NET Core 3.0的版本为.NET Core 3.0 Preview 3,对应ASP.NET Core 3.0 Preview 3. ASP.NET Core 3.0 之后将不再支持.NE ...

  9. 【Linux】Linux简介

    思维导图 什么是Linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统. Linux能运行主要的UNIX工 ...

  10. Kali Linux常用服务配置教程安装及配置DHCP服务

    Kali Linux常用服务配置教程安装及配置DHCP服务 在Kali Linux中,默认没有安装DHCP服务.下面将介绍安装并配置DHCP服务的方法. 1.安装DHCP服务 在Kali Linux中 ...