怎么在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中使用类