Posted in Javascript onDecember 19, 2011
var orchard = function (){ //基类型构造函数代理 静态方法都在代理函数上 this.constructor && this.constructor.apply(this,arguments); }; orchard.extend = function() { var parentObj = this; var parameters = parentObj.parameters ? parentObj.parameters.concat(_.toArray(arguments)) : _.toArray(arguments); var thisObj = function(){ //继承类型构造函数代理 var newparameters = parameters.concat(_.toArray(arguments)); this.constructor && this.constructor.apply(this,newparameters); }; _.extend(thisObj,parentObj); _.extend(thisObj.prototype,parentObj.prototype); thisObj.parameters = parameters; thisObj.base = thisObj.prototype.base = parentObj; //基类型的代理函数 thisObj.supper = thisObj.prototype.supper = parentObj.prototype; //基类型的构造函数 类成员都在构造函数上 return thisObj; }; orchard.define = function(object){ if(typeof object === "undefined") object = {constructor: function(){}}; this.prototype = object.constructor; this.prototype.constructor = this.prototype; for(var name in this.base) if(typeof this[name] === "undefined") this[name] = this.base[name]; for(var name in this.supper) if(typeof this.prototype[name] === "undefined") this.prototype[name] = this.supper[name]; for(var i = 0; i < arguments.length; i++) _.extend(this.prototype,arguments[i]); this.prototype.base = this.base; this.prototype.supper = this.supper; this.supper = undefined; delete this.supper; return this; }; orchard.definenew = function(){ var newclass = this.extend(); return define.apply(newclass,arguments); };
调用:
var Person = orchard.definenew({ constructor: function(name){ this.name = name; }, say: function(){ return "Hello, i'm " + name;} }); var aBen = Person.extend("aBen"); aBen.define({ constructor: function(){ this.supper.apply(this,arguments); } }); var aben = new aBen(); alert(aben.say());
思路就是这样的,代码没验证过。分享的思路,大家自己看着办。哈哈~~
javascript面向对象编程代码
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@