javascript 写类方式之六


Posted in Javascript onJuly 05, 2009

6、Prototype.js的写类方式

//prototype.js中的代码 
var Class = { 
create: function() { 
return function() { 
this.initialize.apply(this, arguments); 
} 
} 
} 
//简化后的 
function Clazz() { 
return function(){ 
this.initialize.apply(this,arguments); 
} 
}

如下步骤写一个类,
//类名Person 
var Person = Class.create(); //通过原型重写来定义Person 
Person.prototype = { 
initialize : function(name) { 
this.name = name; 
}, 
getName : function() { 
return this.name; 
}, 
setName : function(name) { 
this.name = name; 
} 
} 
//创建对象 
var p = new Person("jack"); 
console.log(p.constructor == Person);//false

initialize完成对象的初始化(相当于构造函数),方法依次往下写即可。

有个问题,通过这句p.constructor == Person为false可以看到,这正是Prototype.js一个小小的缺陷。原因是重写了Person的原型。为了使constructor能指向正确的构造器,只需在原型重写时维护好constructor属性即可。

Person.prototype = { 
constructor : Person,//注意这里 
initialize : function(name) { 
this.name = name; 
}, 
getName : function() { 
return this.name; 
}, 
setName : function(name) { 
this.name = name; 
} 
}

好了,这时候p.constructor == Person就是true了。
Javascript 相关文章推荐
Jquery作者John Resig自己封装的javascript 常用函数
Nov 09 Javascript
jQuery EasyUI 开源插件套装 完全替代ExtJS
Mar 24 Javascript
JavaScript如何从listbox里同时删除多个项目
Oct 12 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
Mar 19 Javascript
javascript实现随时变化着的背景颜色
Apr 02 Javascript
javascript格式化指定日期对象的方法
Apr 21 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
Jun 12 Javascript
vue 做移动端微信公众号采坑经验记录
Apr 26 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
Jul 24 Javascript
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
基于Vue实现电商SKU组合算法问题
May 29 Javascript
vue treeselect获取当前选中项的label实例
Aug 31 Javascript
javascript 写类方式之五
Jul 05 #Javascript
javascript 写类方式之四
Jul 05 #Javascript
javascript 写类方式之三
Jul 05 #Javascript
javascript 写类方式之二
Jul 05 #Javascript
javascript 写类方式之一
Jul 05 #Javascript
Javascript 调试利器 Firebug使用详解六
Jul 05 #Javascript
jQuery DIV弹出效果实现代码
Jul 03 #Javascript
You might like
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
HTML node相关的一些资料整理
2010/01/01 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
python3 读写文件换行符的方法
2018/04/09 Python
django解决跨域请求的问题
2018/11/11 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
python创建学生管理系统
2019/11/22 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
优秀老师事迹材料
2014/02/05 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
车辆年检委托书范本
2014/10/14 职场文书
工程质检员岗位职责
2015/04/08 职场文书
员工辞职信范文大全
2015/05/12 职场文书
演讲比赛主持词
2015/06/29 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
POST提交数据常见的四种方式
2022/01/18 HTML / CSS