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 相关文章推荐
ext监听事件方法[初级篇]
Apr 27 Javascript
JS 中document.URL 和 windows.location.href 的区别
Nov 11 Javascript
js showModalDialog参数的使用详解
Jan 07 Javascript
struts2+jquery组合验证注册用户是否存在
Apr 30 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
Feb 24 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 Javascript
JavaScript实现点击按钮字体放大、缩小
Feb 29 Javascript
JS实现淡入淡出图片效果的方法分析
Dec 20 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
Aug 11 Javascript
教你用Cordova打包Vue项目的方法
Oct 17 Javascript
使用vue-router为每个路由配置各自的title
Jul 30 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
Dec 10 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
利用递归把多维数组转为一维数组的函数
2006/10/09 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
原生js检测页面加载完毕的实例
2018/09/11 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
Python socket服务常用操作代码实例
2020/06/22 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
新西兰优惠网站:Treat Me
2019/07/04 全球购物
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
编码实现字符串转整型的函数
2012/06/02 面试题
2014年实验室工作总结
2014/12/03 职场文书
永不妥协观后感
2015/06/10 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python
python turtle绘制多边形和跳跃和改变速度特效
2022/03/16 Python