ES6-Class

回顾:

函数变量作用域的问题:

  1.函数体内声明的变量:

    var a=45;

    function fn(){

      console,log(a)

      var a=12;

    }

    fn()

2.参数中的变量:

  没有赋值   function fn(a){}

  赋值的值不是变量  function (a=45){}

  赋值且值也是变量  function fn(a=m){}

函数执行的时候,先给形参赋值,形参也是私有变量,如果形参赋的值也是变量,

先看这个变量是不是私有变量(不是针对函数体内的,只针对形参,还跟形参的顺序有关),

如果不是私有的找全局,没有全局就报错;

  特例:给形参赋的变量与形参同名;

-----------------------------------------------------------------------------------------------------------------

Class

1.在class类上添加的属性都是在原型prototype上添加的

2.new实例的时候其实就是调用构造函数这个方法

3.类的本质就是一个函数

4.类中的this指向实例对象

5.添加了私有属性都在构造函数中

6.每个构造方法都会默认返回实例对象this,如果人为改变return的返回值,返回

基本数据类型(字符串,数字,布尔,null,undefined),不会改变return的this;

如果返回引用数据类型obj arr等,return this就会失效,变成那你返回的结果;

7.

 静态方法在方法名上加上static关键字;

 那么这个方法就变成了类的私有方法;

8.Extends 继承

  子类继承父类,使用extends关键字

  代码块里 需要使用super关键字

    充当函数时,只能在子类的构造函数中使用,且必须放在第一行使用,指向父类的构造函数,只有super调用之后,子类才可以使用this关键字,指向子类的实例对象。

    充当对象时,放在普通函数中,super指向父类的原型prototype

    放在静态方法中super  super 执行当前父类本身。

原文地址:https://www.cnblogs.com/lovels/p/11158568.html