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 相关文章推荐
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
Apr 27 Javascript
require.js深入了解 require.js特性介绍
Sep 04 Javascript
jquery中radio checked问题
Mar 16 Javascript
jquery实现从数组移除指定的值
Jun 24 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
Aug 28 Javascript
浅析Bootstrap缩略图组件与警示框组件
Apr 29 Javascript
走进javascript——不起眼的基础,值和分号
Feb 24 Javascript
Laravel admin实现消息提醒、播放音频功能
Jul 10 Javascript
微信小程序sessionid不一致问题解决
Aug 30 Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
Feb 11 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
May 13 Javascript
深入浅析React中diff算法
May 19 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如何得到当前页和上一页的地址?
2006/11/27 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
使用PHP导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
Js sort排序使用方法
2011/10/17 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
python图像处理之反色实现方法
2015/05/30 Python
一步步解析Python斗牛游戏的概率
2016/02/12 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
Python变量赋值的秘密分享
2018/04/03 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
python中wheel的用法整理
2020/06/15 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
当当网软件测试笔试题
2015/11/24 面试题
经理秘书找工作求职信
2013/12/19 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
党员入党表决心的话
2014/03/11 职场文书
个人专业技术总结
2015/03/05 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python