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 相关文章推荐
客户端静态页面玩分页
Jun 26 Javascript
JavaScript入门教程(5) js Screen屏幕对象
Jan 31 Javascript
分享20个提升网站界面体验的jQuery插件
Dec 15 Javascript
javascript数组去重的方法汇总
Apr 14 Javascript
由ReactJS的Hello world说开来
Jul 02 Javascript
JavaScript中的Repaint和Reflow用法详解
Jul 27 Javascript
值得分享的轻量级Bootstrap Table表格插件
May 30 Javascript
js实现动态创建的元素绑定事件
Jul 19 Javascript
AngularJS过滤器filter用法总结
Dec 13 Javascript
vue2 前端搜索实现示例
Feb 26 Javascript
vue通信方式EventBus的实现代码详解
Jun 10 Javascript
js实现圆形显示鼠标单击位置
Feb 11 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
Apache2 httpd.conf 中文版
2006/12/06 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
利用CSS3在Angular中实现动画
2016/01/15 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
函数式编程入门实践(一)
2019/04/20 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
Python 爬虫的工具列表大全
2016/01/31 Python
python cx_Oracle的基础使用方法(连接和增删改查)
2017/11/19 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
python中删除某个元素的方法解析
2019/11/05 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
出纳试用期工作总结2015
2015/05/28 职场文书
李强为自己工作观后感
2015/06/11 职场文书
公司出差管理制度范本
2015/08/05 职场文书
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL