美文网首页
es5 & es6 面相对象编程

es5 & es6 面相对象编程

作者: 不设限 | 来源:发表于2019-04-16 22:15 被阅读0次

面向对象三大特征:封装 继承 多态

es5面向对象

封装

说明:es5封装其实就是封装函数,封装好的函数就叫做构造函数,按照书写规范即属性一般写在构造函数内部,方法一般写在构造函数的原型上,如下实例:

function Parent(name,age){
       this.name=name;
       this.age=age;
}
Parent.prototype.getName=fuction(){
       console.log(this.name);
}
Parent.prototype.getAge=fuction(){
        console.log(this.age);
}

继承

说明:子构造函数继承父构造函数属性及方法。
继承父属性:只需要在子构造函数内部通过调用父构造函数并使用call bind apply三个api其中一个来改变this指向,指向子构造。
继承父方法:一般通过一个中间空构造函数,将父原型赋值给空构造函数原型,之后创建一个空构造函数的对象,将此对象赋值给子原型,这样便就很好的表达了继承父方法的效果。

function Son(name,age,id){
       Parent.call(this,name,age);//继承属性
       this.id=id;
}
function Fn(){};
Fn.prototype=Parent.prototype;
Son.prototype=new Fn();//继承方法
Son.prototype.getId=function(){
       console.log(this.id);
}

创建对象

说明:使用new关键字

var xmy=new Sun('张三',20,1);
xmy.getName();//张三
xmy.getAge();//20
xmy.getId();//1
---------------------------------------------------------------------------------------------------
使用new关键字创建对象,对构造函数内部的影响:
1.构造函数内部会创建一个新的对象
2.this会指向这一新的的对象
3.会返回这一新的对象

es6面向对象

前言:由于es5中没有类的概念,所以我们在使用面向对象编程时稍有些麻烦,而恰好es6新规的出现,扩展了类的概念,这将给我们面向对象编程带来了巨大好处,请看下文。

封装

说明:即定义一个类,类中存放属性和方法,属性放在constructor内,方法和constructor同级,constructor实质就是一个构造器或叫做构造函数

class A{
   constructor(name,age){
       this.name=name;
       this.age=age;      
   }
   getName(){
       console.log(this.name);
   }
   getAge(){
       console.log(this.age);
   }
}

继承

说明:使用super关键字实现完全继承父类。
注意:extends和super 是成对出现的,需要配合使用,才能实现继承

class B extends A{
     constructor(name,age,id){
         super(name,age);
         this.id=id;
     }
     getId(){
         console.log(this.id);
     }

}

创建对象

说明:使用new关键字

var xmy=new B('张三',20,1);
xmy.getName();//张三
xmy.getAge();//20
xmy.getId();//1
---------------------------------------------------------------------------------------------------
使用new关键字创建对象,对构造函数内部的影响:
1.构造函数内部会创建一个新的对象
2.this会指向这一新的对象
3.会返回这一新的对象

es5和es6两种面向对象的方式而言,本人还是更偏向于es6,因为它实在是太方便了。

相关文章

网友评论

      本文标题:es5 & es6 面相对象编程

      本文链接:https://www.haomeiwen.com/subject/phgvwqtx.html