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 相关文章推荐
javascript天然的迭代器
Oct 29 Javascript
通过jQuery源码学习javascript(三)
Dec 27 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
Jun 27 Javascript
javascript 自定义回调函数示例代码
Sep 26 Javascript
js获取元素相对窗口位置的实现代码
Sep 28 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
Feb 02 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
Dec 15 Javascript
Webwork 实现文件上传下载代码详解
Feb 02 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
Sep 21 Javascript
jQuery实现发送验证码并60秒倒计时功能
Nov 25 Javascript
IE8兼容Jquery.validate.js的问题
Dec 01 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
Apr 14 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
PHP 常用函数库和一些实用小技巧
2009/01/01 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
php按单词截取字符串的方法
2015/04/07 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
基于Jquery的简单图片切换效果
2011/01/06 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
Vue路由的模块自动化与统一加载实现
2020/06/05 Javascript
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
python time模块用法实例详解
2014/09/11 Python
Python图算法实例分析
2016/08/13 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
2020/04/15 Python
django使用JWT保存用户登录信息
2020/04/22 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
学习雷锋寄语大全
2014/04/11 职场文书
留学推荐信中文范文
2015/03/26 职场文书
校长一岗双责责任书
2015/05/09 职场文书
行政撤诉申请书
2015/05/18 职场文书
焦裕禄观后感
2015/06/03 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书