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 相关文章推荐
syntaxhighlighter 使用方法
Jul 02 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
Oct 24 Javascript
详解AngularJS的通信机制
Jun 18 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
Aug 19 Javascript
使用jsonp实现跨域获取数据实例讲解
Dec 25 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
Jan 15 Javascript
JavaScript 过滤关键字
Mar 20 Javascript
微信小程序 图片绝对定位(背景图片)
Apr 05 Javascript
Angular4实现动态添加删除表单输入框功能
Aug 11 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
Apr 01 Javascript
详解json串反转义(消除反斜杠)
Aug 12 Javascript
vue-cli3 取消eslint校验代码的解决办法
Jan 16 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的输出:缓存并压缩动态页面
2013/06/11 PHP
php指定函数参数默认值示例代码
2013/12/04 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
javascript表单正则应用
2017/02/04 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
分享Angular http interceptors 拦截器使用(推荐)
2019/11/10 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
Python中的面向对象编程详解(下)
2015/04/13 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
Sony C++笔试题
2013/03/10 面试题
面向对象概念面试题(.NET)
2016/11/04 面试题
Shell如何接收变量输入
2016/08/06 面试题
历史专业大学生职业生涯规划书
2014/03/13 职场文书
运动会加油稿100字
2014/09/19 职场文书
2014年医院党建工作总结
2014/12/20 职场文书