当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JS仿Base.js实现的继承示例

JS仿Base.js实现的继承示例

2018年06月06日  | 移动技术网IT编程  | 我要评论

本文实例讲述了js仿base.js实现的继承。分享给大家供大家参考,具体如下:

var klass = function() {};
klass.extendclass = (function() {
  var f = function() {};
  return function(c, p) {
    f.prototype = p.prototype;
    c.prototype = new f();
    c.uper = p.prototype;
    c.prototype.constructor = c;
  };
})();
klass.extend = function(props) {
  var _slice = array.prototype.slice;
  var glass = function() {
    /*if (glass.uper && glass.uper.hasownproperty("init")) {
      glass.uper.init.apply(this, _slice.call(arguments))
    }*/
    if (glass.prototype.hasownproperty("init")) {
      glass.prototype.init.apply(this, _slice.call(arguments));
    }
  };
  klass.extendclass(glass, this);
  glass.extend = this.extend;
  for (var key in props) {
    if (props.hasownproperty(key)) {
      glass.prototype[key] = props[key];
    }
  }
  return glass;
};

example:

var a = klass.extend({
    init: function(name) {
      this.name = name;
      console.log('a constructor is running!');
    },
    getname: function() {
      return this.name;
    }
});
var b = a.extend({
    init: function(name) {
      this.name = name;
      console.log('b constructor is running!');
    },
    getname: function() {
      return this.name;
    },
    a: 'b'
});
var c = b.extend({
    init: function(name) {
      console.log('c constructor is running!');
    },
    c: 'c',
    getname: function() {
      var name = c.uper.getname.call(this);
      return 'hi, i\'m' + this.name;
    }
});
var c1 = new c('zlf');
console.log(c1.getname());

更多关于javascript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《javascript错误与调试技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》及《javascript数学运算用法总结

希望本文所述对大家javascript程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网