ES6 基础知识

1、循环
for in 循环的是对象的属性
for of 循环的是对象的元素
两者都返回value而不是key

2、rest
有了这个参数,再也不用arguments统计额外的参数了
下面这个例子,计算任意数字的和:

function sum(...rest){
    let s = 0;
    for(var i of rest){
        s += i
    }
    return s 
}

sum(1);
sum(1,2,3);

3、命名空间
为了减少多个sj文件的变量名冲突,可以把自己的变量名和函数名绑定到一个全局变量上,如下:

var MYAPP = {}
MYAPP.name  = 'bbb'
MYAPP.say = function(){
    console.log('hello'+this.name)
}

3、高阶函数(哈哈),我感觉就是过滤器
(1)、map 参数是一个函数,这个函数只接受一个参数, 此参数是arr的每个元素

var arr = [1, 2, 3]
var r = arr.map(function(x){
    return x*x
  // 1*1  = 1
  // 2*2 = 4
  // 3*3 = 9
})
r; // 1,4,9

(2)、reduce 参数是一个函数,这个函数接受两个参数,结果继续(x)和序列的下一个元素(y)做累积计算

var arr = [1, 2, 3, 4]
var r = arr.reduce(function(x,y){
  return x*y
  // 1*2 = 2
  // 2*3 = 6
  // 6*4 = 24
})
r; // 24

(3)、真正的过滤器~~filter,参数是一个函数,这个函数的参数是要被过滤数组的元素

var r = [1,2,3,4,5,6].filter(function(x){
  return x % 2 === 0
 })
r; // [2,4,6]

(4)、sort Array的排序方法,这个方法比较坑爹。假如对数字排序它会把数字转成字符串,然后按照字符串的ASCII码进行排序,就会出现1,15,2,22,3。所以要像得出正常的排序必须给sort添加回调函数。

注意:有个常规,如果xy则返回1,如果x=y则返回0

[1,15,2,22,3].sort(function(x,y){
  if(xy){return 1}
  return 0
}) // 1,2,3,15,22

4、继承(看了es5de的继承,我只想对js语言创建者说一句WTF,相比ES6的继承就舒服多了) class继承。
先来个person类:

class Person{
  // 构造函数
  constructor(name){
    this.name = name  
  }
  say(){
    console.log('hello > '+this.name)
  }
}
// 再new个小明哈哈
var xiaoming = new Person('小明')
xiaoming.say()

再看一下继承,上边只是定义类:

 // 继续用上边的Person,我们做一个学生的类,并让他继承Person,继承用 -- extends
class Student extends Person{
  constructor(name,age){
    super(name)    //调用父类构造函数要用 -- super
    this.age = age
  }
  describe(){
    console.log(`I am ${this.name} , ${this.age} yeas old`)
  }
}
// 再new个小雪
var xiaoxue = new Student('小雪',18)
xiaoxue.describe()

你可能感兴趣的:(ES6 基础知识)