zoukankan      html  css  js  c++  java
  • ES5的类

    1.最简单的类

    function Person(){
        this.name='张三';
        this.age=20;
    }
    var p=new Person();
    alert(p.name);
    

    2.构造函数和原型链里面增加方法

    function Person(){
        this.name='张三';/*属性*/
        this.age=20;
        this.run=function(){
            alert(this.name+'在运动');
        }
    }
    //原型链上面的属性会被多个实例共享  构造函数不会
    Person.prototype.sex="男";
    Person.prototype.work=function(){
        alert(this.name+'在工作');
    }
    var p=new Person();
    //alert(p.name);
    //p.run();
    p.work();
    

      

    3.类里面的静态方法

    function Person(){}
    Person.getInfo=function(){
        alert('我是静态方法');
    }
    //调用静态方法
    Person.getInfo();
    

      

    4.es5里面的继承  对象冒充实现继承

    function Person(){
         this.name='张三';/*属性*/
         this.age=20;
         this.run=function(){/*实例方法*/
             alert(this.name+'在运动');
         }
     }      
     Person.prototype.sex="男";
     Person.prototype.work=function(){
          alert(this.name+'在工作');
    }
    //Web类  继承Person类  原型链+对象冒充的组合继承模式
    function Web(){
        Person.call(this);/*对象冒充实现继承*/
    }
    var w=new Web();
    //w.run();//对象冒充可以继承构造函数里面的属性和方法,故此处正常运行
    w.work();//但是没法继承原型链上面的属性和方法,故此处会报错
    

      

    5.es5里面的继承  原型链实现继承

    function Person(){
        this.name='张三';/*属性*/
        this.age=20;
        this.run=function(){/*实例方法*/
            alert(this.name+'在运动');
        }
    }      
    Person.prototype.sex="男";
    Person.prototype.work=function(){
         alert(this.name+'在工作');
    }
    //Web类  继承Person类  原型链+对象冒充的组合继承模式
    function Web(){}
    Web.prototype=new Person();//原型链实现继承
    var w=new Web();
    //w.run();//原型链实现继承:可以继承构造函数里面的属性和方法,故此处正常运行
    w.work();//也可以继承原型链上面的属性和方法,故此处正常运行
    

      

    6.原型链实现继承的问题

    function Person(name,age){
        this.name=name;  /*属性*/
        this.age=age;
        this.run=function(){  /*实例方法*/
            alert(this.name+'在运动');
        }
    }
    function Web(name,age){}
    Web.prototype=new Person();
    var w=new Web('赵四',20);
    w.run();//实例化子类的时候没法给父类传参,故此处会报错
    

      

    7.原型链+对象冒充的组合继承模式

    function Person(name,age){
        this.name=name;  /*属性*/
        this.age=age;
        this.run=function(){  /*实例方法*/
            alert(this.name+'在运动');
        }
    }
    function Web(name,age){
        Person.call(this,name,age);//对象冒充继承  实例化子类可以给父类传参
    }
    Web.prototype=new Person();
    var w=new Web('赵四',20);
    w.run();//此处不会报错
    

      

    8.原型链+对象冒充继承的另一种方式

    function Person(name,age){
        this.name=name;  /*属性*/
        this.age=age;
        this.run=function(){  /*实例方法*/
            alert(this.name+'在运动');
        }
    }
    function Web(name,age){
        Person.call(this,name,age);
    }
    Web.prototype=Person.prototype;
    var w=new Web('赵四',20);
    w.run();
  • 相关阅读:
    传感器仿真平台——数据生成模块(三)
    写一个ES6 的遍历目录函数
    编码风格
    关于DOM事件的一个例子
    WEB DB
    表格资料
    css3 鼠标移入移出效果
    css 3D
    正向代理和反向代理
    FileReader 对象
  • 原文地址:https://www.cnblogs.com/heweiquan/p/11380705.html
Copyright © 2011-2022 走看看