JavaScript

超轻量级php框架startmvc

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

更新时间:2020-05-04 22:00:01 作者:startmvc
本文实例讲述了JS仿Base.js实现的继承。分享给大家供大家参考,具体如下:varKlass=function(){}

本文实例讲述了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());

JS Base.js 继承