再学ES6

    1. for…in遍历数组只能获取索引,且索引为字符串: “1”,”2"。for...of 获取值。forEach不能中断。
    2. Object.keys(obj)
    3. array.keys(),array.entries(),array.values()
    4. 可以用[...arr1, ...arr2]代替concat合并数组
    5. 数组去重:let result = […new Set(arr)];
    6. 函数的参数套函数,由里往外执行;
    7. Generator
    8. Promise

    9. 定义类:constructor中的 this.xx是自身属性,外面的方法是原型链上的属性,怎么在原型链上添加变量属性并不会,写在prototype上吧
    10. 静态方法前加static就好了,但ES6规定没有静态属性,除非 Me.xx这样直接写。
    11. Class.prototype === obj.__proto__  //true
    12. 类总结:
      (类)静态方法与属性是类的,不是对象的。
      extends继承的属性是所有属性,包括constructor中的和原型链上的
      要想实现私有属性,得用闭包与get实现
    13. Module
      CommonJS输出的是值拷贝,ES6输出的是值只读引用。
      模块里面的值改变了,外面引用的值也会一起改变,且外面不能改这个值,因为在外面是只读的。module.exports与require(commonJS)是拷贝了一份不是引用,所以模块里的值变了,跟外面没关系
      一个模块只能有一个export default,export default本质上是输出一个叫default的变量或方法,系统允许引入时取任意名字。
      export default后面不要加声明语句(var,let),可以是变量名或者函数/对象
      export * from ‘./x’会忽略x的default方法
      export:
      export var a = ‘xxx’;
      var a = ‘xxx’; export {a}
      export default var a = ‘xxx’
      export {a} from ‘./xx’
      export * from ‘./xx'
      import:
      import {a} from’./xx’
      import * as obj from ‘./xx’
      import a from ‘./xx'
    14. 类:
      原型链就是通过将子类构造函数的原型作为父类构造函数的实例,这样就连通了子类-子类原型-父类,原型链的特点就是逐层查找,从子类开始一直往上直到所有对象的原型Object.prototype,找到属性方法之后就会停止查找,所以下层的属性方法会覆盖上层。原型中属性的改变会反应到所有的实例上
posted @ 2017-07-25 10:11  wayshon  阅读(104)  评论(0编辑  收藏  举报