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 相关文章推荐
JavaScript 无符号右移运算符
Apr 17 Javascript
jQuery对象和DOM对象的相互转化实现代码
Mar 02 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
Aug 14 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
Jun 27 Javascript
详解JS数组Reduce()方法详解及高级技巧
Aug 18 Javascript
IntersectionObserver实现图片懒加载的示例
Sep 29 Javascript
vue中实现滚动加载更多的示例
Nov 08 Javascript
vue生命周期实例小结
Aug 15 Javascript
微信小程序实现搜索历史功能
Mar 26 Javascript
使用Vue CLI创建typescript项目的方法
Aug 09 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
Sep 25 Javascript
React 实现车牌键盘的示例代码
Dec 20 Javascript
用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,不用COM,生成excel文件
2006/10/09 PHP
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
Javascript 键盘事件的组合使用实现代码
2012/05/04 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
Javascript中的getUTCHours()方法使用详解
2015/06/10 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
js制作支付倒计时页面
2016/10/21 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
关于Stream和Buffer的相互转换详解
2017/07/26 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
微信小程序websocket实现聊天功能
2020/03/30 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
es6数值的扩展方法
2019/03/11 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
用Python制作简单的钢琴程序的教程
2015/04/01 Python
分析Python读取文件时的路径问题
2018/02/11 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
Python列表解析配合if else的方法
2018/06/23 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
戴尔美国官网:Dell
2016/08/31 全球购物
高校教师个人工作总结2014
2014/12/17 职场文书
数学教师个人工作总结
2015/02/06 职场文书
2015年环保局工作总结
2015/05/22 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
Python 中 Shutil 模块详情
2021/11/11 Python
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL