javascript面向对象编程代码

复制代码 代码如下:

  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());

  思路就是这样的,代码没验证过。分享的思路,大家自己看着办。哈哈~~