怎么在es6中使用类

  介绍

怎么在es6中使用课吗?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强> es6类与es5的面向对象的区别:

, 1。写法不同,使用关键字类

, 2。当新的一个实例,默认有一个构造函数方法,且默认返回实例对象(这),也可以返回另一对象

, 3。类的所有方法都在原型属性上,但是不可枚举,且每方法结束不能使用分号

, 4。类的调用必须通过新的一个实例,且类的内部默认使用严格模式

, 5。不存在变量提升,必须先声明,再调用

, 6。类的这个默认指向当前类

, 7。类的静态方法,使用关键字静态的,不需新直接通过类来调用

, 8。实例属性和静态属性的写法,实例属性在类的内部直接使用等式(=)写法,也可以写在构造函数方法里,静态属性只需在实例属性前加一个关键字静态即可

9。类的继承使用关键字扩展,继承机制与es5完全不同,

es5的继承原理:先新子类的实例对象,再通过将父类的方法和属性添加到子类的这上(parents.call(这)。

Es6的继承原理:先创造父类的实例对象,所以要构造函数构造函数()访问父类的属性使用,必须先调用super()方法;再通过子类的构造函数()来修改这

10。类的继承可以继承原生的构造函数,es5不可以

, 1。一般写法(es5与es6)

//一.ES5写法:   function 动画(名字){   this.name 才能=,名称;   }   时间=Animate.prototype.getname 函数(){   console.log才能(this.name)   }   var  p =new 动画(“lity");   p.getname ();//二.ES6,面向对象的写法,属性,   {class 人//构造函数():才能构造方法是默认方法,新的的时候回自动调用,如果没有显式定义,会自动添加//1。才能适合做初始化数据//2.才能构造函数可以指定返回的对象   构造函数才能(姓名、年龄){   ,,=,this.name 名称;   ,,=,this.age 年龄;   }   getval才能(){   ,,,console.log(“你是$ {this.name} $ {this.age}岁');   ,,}   },,,,,,   var  c1 =, new 人(“lity", 20),,   c1.getval ();

, ES6的类可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到

注意:类类的本质还是一个函数、类本身就指向构造函数。

typeof  Person //功能   Person ===, Person.prototype.constructor //,真正的

我们使用对象的一些属性或者方法检测一下用es6写的实例对象

//1。查看实例对象c1的__proto__是否指向人的原型(Person.prototype)   ,console.log (c1.__proto__==Person.prototype)//真实的   ,console.log (c1.__proto__)//原型对象的所有方法   ,//2. isprototypeof:检测实例对象是否是某个函数的原型   console.log才能(Person.prototype.isPrototypeOf (c1));//真实的//3.构造函数:查看某个对象的构造函数   ,,console.log (c1.constructor);   ,//4. hasownproperty:检测某个属性是否是自己的属性;不是原型对象上的属性和方法   ,,console.log (c1.hasOwnProperty (“name"))//真实;   ,//5.:通过在可以检测属性是否在自己中(这)或者是原型中存在   ,,,console.log (“getval",拷贝c1)//原型上存在,真的   ,,,console.log (“name",拷贝c1)//构造函数(自己上存在),真的//6。自定义检测属性是否是存在   ,,,function  hasproperty (attr, obj) {   ,,,,,,return  obj.hasOwnProperty (attr),和(attr 拷贝;obj);   ,,,}   ,,,console.log (hasproperty (“name" c1));//真的,

2。表达式写法

//类表达式   const  Myclass =, class 我{//这里的我是没有作用的   构造函数才能(名称、慢跑){   ,,,this.name =,名称;   ,,,this.jog =,慢跑;   ,,}   getval才能(){   ,,,console.log (“name  is  $ {this.name}, job  is  a  $ {this.jog} ');   ,,}   }   ,var  obj1 =, new  Myclass (“lylt",“teacher");   ,obj1.getval ();

3.类的私有方法(ES6不提供写法)和私有属性(也不提供写法,提案用#识别)

,,,,,所谓私有方法和私有属性,是指只能在类的内部使用,不能在类外部调用

, 4. es6规定类类没有静态属性,只有静态方法:静态

,,,,所谓静态,不需要实例化对象,直接调用

class  Foo  {   ,,static  classMethod (), {   ,,,,,return  & # 39;横# 39;;   ,,,}   ,}   ,console.log (Foo.classMethod()),//, & # 39;你好# 39;

怎么在es6中使用类