zoukankan      html  css  js  c++  java
  • js抽象类和抽象方法

    js中模拟抽象类:在父类中调用一个未定义的方法,这个方法在子类中必须被实现。

    1, 模拟类的工厂模式

    //基类
    var Class = {
        //基类的静态方法
        creat:function(){
            //返回一个constructor
            return function(){
                //调用未定义的initialize,
                //将constructor的arguments传递给initialize
                this.initialize.apply(this,arguments);
            }
        }
    };
    
    var class1 = Class.creat();
    class1.prototype = {
        initialize:function(str){
            alert(str);
        }
    };
    var obj = new class1('hello');

    2, 在父类中调用一个未定义的方法(或者定义了的空方法),这个方法在子类才被实现。

    Object.extend = function(des,source){
        for(p in source){
            des[p] = source[p];
        }
        return des;
    };
    Object.prototype.extend = function(object){
        return Object.extend.apply(this,[this,object]);
    };
    
    function BaseClass(){};
    BaseClass.prototype = {
        initialize:function(name,age){
            this.name = name;
            this.age = age;//调用了一个抽象方法
            this.oninit();
        },
        //抽象方法是一个空方法,由派生类实现
        oninit:function(){} 
    };
    function ClassA(){};
    ClassA.prototype = (new BaseClass()).extend({
        oninit:function(){
            alert(this.name + ' : ' + this.age);
        }
    }); 
    var obj = new ClassA();
    obj.initialize('Tom',22);
  • 相关阅读:
    json
    ajax
    oracle 分页查询
    NuGet使用
    【EF】Entity Framework使用
    【mssql】增删改查笔记
    【mysql】知识点
    【angularJS】学习笔记
    C# Ninject使用
    【CSS】Table样式
  • 原文地址:https://www.cnblogs.com/huhy/p/3630919.html
Copyright © 2011-2022 走看看