模拟继承

JavaScript模拟Java类继承

偶尔善良 提交于 2020-03-02 04:38:50
javascript采用原型继承的方式继承一个类(javascript没有类这个概念,暂时这么称呼吧),但一些使用过Java的程序员可能习惯使用经典的类继承,但javascript原生并不支持这种方式,因此需要手动实现。我是通过定义一个定义类的函数实现的,由于javascript没有访问修饰符,因此如果需要使用到private成员,请使用闭包。 /*将一个对象的自有属性复制到另一个对象的方法*/ function merge(from, to){ for(var i in from){ if(from.hasOwnProperty(i)){ to[i] = from[i]; } } } /*用于定义一个类 *参数:构造函数,继承的父类, 属性, 静态属性, 是否为单例模式 */ function defineClass(constructor, parent, properties, statics, isSingleton){ /*使用代理函数,这样父类采用this.xx定义的引用类型将每个实例独有*/ var oldConstructor = constructor; /*如果为单例模式,保存实例,并在以后的调用中返回此实例*/ if(isSingleton){ var instance; constructor = function(){ if(instance)