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 相关文章推荐
用脚本调用样式的几种方法
Dec 09 Javascript
自动完成JS类(纯JS, Ajax模式)
Mar 12 Javascript
jQuery 数据缓存data(name, value)详解及实现
Jan 04 Javascript
javascript如何使用bind指定接收者
May 04 Javascript
jQuery表格行上移下移和置顶的实现方法
Oct 08 Javascript
教你用十行node.js代码读取docx的文本
Mar 08 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
Apr 13 Javascript
js中的 || 与 &amp;&amp; 运算符详解
May 24 Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 Javascript
openLayer4实现动态改变标注图标
Aug 17 Javascript
vue video和vue-video-player实现视频铺满教程
Oct 30 Javascript
微信小程序组件生命周期的踩坑记录
Mar 03 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
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
热点新闻滚动特效的js代码
2013/08/17 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python使用webbrowser浏览指定url的方法
2015/04/04 Python
python 网络编程详解及简单实例
2017/04/25 Python
Python函数式编程
2017/07/20 Python
python的文件操作方法汇总
2017/11/10 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
Wallis官网:英国女装零售商
2020/01/21 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
会计学自荐信
2014/06/03 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
店铺转让协议书
2015/01/29 职场文书
交流会主持词
2015/07/02 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers