ES6学习

  一直在断断续续的学习ES6,但是js确实发展的比较快,导致自己对于最近出来的一些新语法,ES7,8,9,10是有些糊涂的,内心是想说,连es6都没 学全呢,不过呢,用的多的就知道,什么let,const啦,解构赋值啦,箭头函数啦,....

  但是随着Vue3.0的脚步越来越近,proxy以及相关的东西越来越多,但是说实话,这些只是知道,但是工作中肯定是没有用过的,

  今天又翻开了es6的文章,希望在看看class部分,

  之前对class总是模糊的,用的确实也是不多,对什么静态方法,静态属性,之类的概念有点懵,那么今天就趁此机会来捋捋

  把整个部分看下来呢,发现也还好,

  1,静态方法=》就是定义在类本身上面的方法,而不是实例方法,这个需要在方法前面加上关键字static

  2,静态属性 既然有方法,一般想到的,应该会有属性吧,但是现在es6规定,class内部只能有静态方法,而不能有静态属性,静态属性一般写在外面

  3,实例属性  一般实例属性是写在constructor方法里面的,下面的name和age就都是实例属性,现在实例可以不用写在constructor方法里面,可以写在类的最顶部

  4,私有属性和方法 ,私有方法和私有属性,是只能在类的内部访问的方法和属性,外部不能访问。这是常见需求,有利于代码的封装,但 ES6 不提供,只能通过变通方法模拟实现。 

  

 clsss Foo(){
  count:0 //实例属性也可以这么写,都不用带this
  constructor(name,age){
    this.name=name,
    this.age=age
  }
  
static getName(){ return '我是静态方法' } }
Foo.name = '我是静态属性'

第二部分,就是继承了,可以通过extends关键字实现继承

//这个是阮一峰老师书里面的例子
class ColorPoint extends Point {
  constructor(x, y, color) {
    super(x, y); // 调用父类的constructor(x, y)
    this.color = color;
  }

  toString() {
    return this.color + ' ' + super.toString(); // 调用父类的toString()
  }
}

 

摘抄一段比较重要的,关于super的

上面代码中,constructor方法和toString方法之中,都出现了super关键字,它在这里表示父类的构造函数,用来新建父类的this对象。

子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类自己的this对象,必须先通过父类的构造函数完成塑造,

得到与父类同样的实例属性和方法,然后再对其进行加工,加上子类自己的实例属性和方法。如果不调用super方法,子类就得不到this对象。

 

其实搞下来呢,内容也还好,是吧,没那么难,起码比通过原型去实现继承还是简单一点吧

 

posted @ 2020-07-07 00:20  yang_nick  阅读(164)  评论(0编辑  收藏  举报