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 相关文章推荐
在网页里看flash的trace数据的js类
Jan 10 Javascript
javascript用户注册提示效果的简单实例
Aug 17 Javascript
js中typeof的用法汇总
Dec 12 Javascript
jquery动态添加option示例
Dec 30 Javascript
jQuery中closest和parents的区别分析
May 07 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
Feb 18 Javascript
bootstrap下拉菜单使用方法解析
Jan 13 Javascript
JS检测数组类型的方法小结
Mar 14 Javascript
详解Vue路由自动注入实践
Apr 17 Javascript
送你43道JS面试题(收藏)
Jun 17 Javascript
微信小程序个人中心的列表控件实现代码
Apr 26 Javascript
Js数组扁平化实现方法代码总汇
Nov 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
基于pear auth实现登录验证
2010/02/26 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
laravel学习教程之存取器
2016/07/30 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
JS获取IP、MAC和主机名的五种方法
2013/11/14 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
2016/04/29 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
JavaScript图像放大镜效果实现方法详解
2020/06/28 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
浅谈Python的异常处理
2016/06/19 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
浅谈python 类方法/静态方法
2020/09/18 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
吉列剃须刀英国官网:Gillette英国
2019/03/28 全球购物
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
会计自我鉴定范文
2013/10/06 职场文书
校园公益广告语
2014/03/13 职场文书
五一促销活动总结
2014/07/01 职场文书
学生安全责任书范本
2014/07/24 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python