javascript面向对象编程代码


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 相关文章推荐
原型方法的不同写法居然会影响调试的解决方法
Mar 08 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
Mar 01 Javascript
JQuery1.8 判断元素是否绑定事件的方法
Jul 10 Javascript
js中实现多态采用和继承类似的方法
Aug 22 Javascript
JS长整型精度问题实例分析
Jan 13 Javascript
微信小程序实战之上拉(分页加载)效果(2)
Apr 17 Javascript
基于JavaScript实现活动倒计时效果
Apr 20 Javascript
JS实现的缓冲运动效果示例
Apr 30 Javascript
vue-cli中安装方法(图文详细步骤)
Dec 12 Javascript
微信小程序HTTP请求从0到1封装
Sep 09 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
Nov 16 Javascript
vue实现验证用户名是否可用
Jan 20 Vue.js
用jQuery模拟页面加载进度条的实现代码
Dec 19 #Javascript
javascript管中窥豹 形参与实参浅析
Dec 17 #Javascript
jquery focus(fn),blur(fn)方法实例代码
Dec 16 #Javascript
JS获取整个页面文档的实现代码
Dec 15 #Javascript
jQuery版仿Path菜单效果
Dec 15 #Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
Dec 14 #Javascript
js 可拖动列表实现代码
Dec 13 #Javascript
You might like
针对初学PHP者的疑难问答(1)
2006/10/09 PHP
PHP生成月历代码
2007/06/14 PHP
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
PHP进程通信基础之信号
2017/02/19 PHP
PHP反射实际应用示例
2019/04/03 PHP
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
Python通用函数实现数组计算的方法
2019/06/13 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
python代码如何注释
2020/06/01 Python
python 实现汉诺塔游戏
2020/11/28 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
什么是GWT的Module
2013/01/20 面试题
小学新教师培训方案
2014/02/03 职场文书
关于元旦的广播稿
2014/02/16 职场文书
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
超市创意活动方案
2014/08/15 职场文书
集体生日活动方案
2014/08/18 职场文书
培训简讯范文
2015/07/20 职场文书
解除租赁合同协议书
2016/03/21 职场文书