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 15 Javascript
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
Oct 22 Javascript
Javascript将string类型转换int类型
Dec 09 Javascript
有趣的JavaScript数组长度问题代码说明
Jan 20 Javascript
jquery浏览器滚动加载技术实现方案
Jun 03 Javascript
js从外部获取图片的实现方法
Aug 05 Javascript
jQuery学习笔记之回调函数
Aug 15 Javascript
Bootstrap模态对话框用法简单示例
Aug 31 Javascript
使用vue.js在页面内组件监听scroll事件的方法
Sep 11 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
Jan 21 Javascript
新手简单了解vue
May 29 Javascript
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
Mar 17 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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
php学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
2010/03/23 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
python利用datetime模块计算时间差
2015/08/04 Python
python实现扫描日志关键字的示例
2018/04/28 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
运动会广播稿50字
2014/01/26 职场文书
新护士岗前培训制度
2014/02/02 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
幼儿教师个人总结
2015/02/05 职场文书
2015年底工作总结范文
2015/05/15 职场文书
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python
Moment的feature导致线上bug解决分析
2022/09/23 Javascript