es5/es6

2018-09-26  本文已影响0人  岸与海

ECMAScript理解

  1. 它是一种由ECMA组织(前身为欧洲计算机制造商协会)制定和发布的脚本语言规范
  2. 而我们学的 JavaScript 是ECMA的实现, 但术语ECMAScript和JavaScript平时表达同一个意思
  3. JS包含三个部分:
    1). ECMAScript(核心)
    2). 扩展==>浏览器端
    * BOM(浏览器对象模型)
    * DOM(文档对象模型)
    3). 扩展==>服务器端
    * Node
  4. ES的几个重要版本
    • ES5 : 09年发布
    • ES6(ES2015) : 15年发布, 也称为ECMA2015
    • ES7(ES2016) : 16年发布, 也称为ECMA2016 (变化不大)

严格模式

  1. 理解:
  1. 目的/作用
    • 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为
    • 消除代码运行的一些不安全之处,为代码的安全运行保驾护航
    • 为未来新版本的Javascript做好铺垫
  2. 使用
  1. 语法和行为改变
    • 必须用var声明变量
    • 禁止自定义的函数中的this指向window
    • 创建eval作用域
    • 对象不能有重名的属性

json对象

  1. JSON.stringify(obj/arr)
  1. JSON.parse(json)

object扩展

ES5给Object扩展了一些静态方法, 常用的2个:

  1. Object.create(prototype, [descriptors])
  1. Object.defineProperties(object, descriptors)

Array扩展

  1. Array.prototype.indexOf(value) : 得到值在数组中的第一个下标
  2. Array.prototype.lastIndexOf(value) : 得到值在数组中的最后一个下标
  3. Array.prototype.forEach(function(item, index){}) : 遍历数组
  4. Array.prototype.map(function(item, index){}) : 遍历数组返回一个新的数组,返回加工之后的值
  5. Array.prototype.filter(function(item, index){}) : 遍历过滤出一个新的子数组, 返回条件为true的值
    *需求
    需求:
    1. 输出第一个6的下标
    2. 输出最后一个6的下标
    3. 输出所有元素的值和下标
    4. 根据arr产生一个新数组,要求每个元素都比原来大10
    5. 根据arr产生一个新数组, 返回的每个元素要大于4

    let

  6. 作用:
  1. 特点:
  1. 应用:

cont关键字

  1. 作用:
  1. 特点:
  1. 应用:

变量的解构赋值

  1. 理解:
  1. 对象的解构赋值
    let {n, a} = {n:'tom', a:12}
  2. 数组的解构赋值
    let [a,b] = [1, 'hello'];
  3. 用途

模板字符串

  1. 模板字符串 : 简化字符串的拼接

简化的对象写法

简化的对象写法
* 省略同名的属性值
* 省略方法的function
* 例如:
  let x = 1;
  let y = 2;
  let point = {
    x,
    y,
    setX (x) {this.x = x}
  };

箭头函数

3点运算符

* 用途
1. rest(可变)参数
    * 用来取代arguments 但比 arguments 灵活,只能是最后部分形参参数
    function fun(...values) {
        console.log(arguments);
        arguments.forEach(function (item, index) {
            console.log(item, index);
        });
        console.log(values);
        values.forEach(function (item, index) {
            console.log(item, index);
        })
    }
    fun(1,2,3);
2. 扩展运算符
  let arr1 = [1,3,5];
  let arr2 = [2,...arr1,6];
  arr2.push(...arr1);

Promise对象

1. 理解:
  * Promise对象: 代表了未来某个将要发生的事件(通常是一个异步操作)
  * 有了promise对象, 可以将异步操作以同步的流程表达出来, 避免了层层嵌套的回调函数(俗称'回调地狱')
  * ES6的Promise是一个构造函数, 用来生成promise对象的实例
2. 使用promise基本步骤(2步):
  * 创建promise对象
    let promise = new Promise((resolve, reject) => {
        //初始化promise状态为 pending
      //执行异步操作
      if(异步操作成功) {
        resolve(value);//修改promise的状态为fullfilled
      } else {
        reject(errMsg);//修改promise的状态为rejected
      }
    })
  * 调用promise的then()
    promise.then(function(
      result => console.log(result),
      errorMsg => alert(errorMsg)
    ))
3. promise对象的3个状态
  * pending: 初始化状态
  * fullfilled: 成功状态
  * rejected: 失败状态
4. 应用:
  * 使用promise实现超时处理
  * 使用promise封装处理ajax请求
    let request = new XMLHttpRequest();
    request.onreadystatechange = function () {
    }
    request.responseType = 'json';
    request.open("GET", url);
    request.send();
-->

<script type="text/javascript">
    /*
    //创建promise对象
    let promise = new Promise((resolve, reject) => {
        //初始化promise状态:pending(初始化)
        console.log('111');
        //执行异步操作,通常是发送ajax请求、开启定时器
        setTimeout(() => {
            console.log('333');
            //根据异步任务的返回结果,去修改promise的状态
            //异步任务执行成功
            // resolve('哈哈');//修改promise的状态为fullfilled(成功状态)
            //异步任务执行失败
            reject('555');//修改promise的状态为rejected(失败状态)
        }, 2000);
    })
    console.log('222');
    promise
        .then((data) => {//成功的回调
            console.log(data, '成功了~~~');
        }, (error) => {//失败的回调
            console.log(error, '失败了~~~');
        });
上一篇 下一篇

猜你喜欢

热点阅读