美文网首页
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