简单的JS多重继承示例

BAT 批处理程序 2017-06-01

复制代码 代码如下:

$defined = function (v) {     return v != undefined; } Class = function () {     var base = {};     for (var k=0; k<arguments.length; k++) {     //{{new arguments[k]() with custom constructor field.         var o = arguments[k].prototype;         o.constructor = arguments[k];         arguments[k].call(o);     //}}         for (key in o) base[key] = o[key];     }     function Klass () {         // for every class one object cache.         var clso = null;         function klass() {             if (arguments.length<=0 && clso!=null) {                 // hit cache.                 return clso;             }             if ($defined(this.constructor.init)) {                 // use init() for class initialization.                 this.constructor.init.apply(this, arguments);             }             clso = this;         }         klass.prototype = base;         return klass;     }     return Klass(); } A = new Class(); A.init = function () {     this.x = 400;     this.y = 300; } B = new Class(A); B.init = function () {     this.y = 200;     this.z = 100; } C = new Class(B); C.init = function () {     this.z = 0; } c = new C(); alert(c.x); alert(c.y); alert(c.z); 

相关推荐