You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
classPoint{constructor(x,y){this.x=x;this.y=y;}staticprint(){console.log(this);console.log(`x: ${this.x},y: ${this.y}`);}}constp=newPoint();p.print();// p.print is not a functionPoint.print();// x: undefined,y: undefined
前言
上一篇整理了es6解构语法相关的一块知识(【ES6系列】解构赋值(整理篇))。这一篇,要整理的是class相关的知识。
什么是class
class就是类,和ES5中的构造函数十分相似,绝大部分功能都是一致的,但是class的写法,能让对象原型的功能更加清晰,更加符合面向对象语言的特点。
class的写法
class的内部所有定义的方法,都是不可枚举的。而原型上面定义的方法都是可以枚举的。
constructor方法
constructor
是类的默认方法,就算不定义,也会有一个空的constructor
。getter和setter
getter和setter就是拦截器,在做某个操作的时候,可以添加一些自定义的东西。
注意点
class内部默认就是严格模式。
类是对ES5构造函数的一层封装,所以很多属性都被class继承,包括name这个属性。
正常情况下,this的指向都是类的实例。但是当你单独把其中的方法拿出来调用,那么就会发生报错。
上述例子中,输出的this是undefined。因为this会指向当前函数运行的环境之下,但是class内部定义了严格模式,所以this为undefined。
静态方法和静态属性
静态方法是指class上的方法不会被实例继承。关键词——static
静态属性并没有static这个关键词。
实例属性的新写法
当一个属性值并没有在初始化的时候赋值,我们可以像下面那么写:
总结
这一篇整理了class的一些基础语法。下一篇将会整理class的继承相关。
The text was updated successfully, but these errors were encountered: