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 解析读取XML文档 实例代码
Jul 07 Javascript
加载jQuery后$冲突的解决办法
Jul 09 Javascript
JS中for循序中延迟加载动态效果的具体实现
Aug 18 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
Jan 19 Javascript
浅谈jQuery添加的HTML,JS失效的问题
Oct 05 Javascript
vue实现移动端图片裁剪上传功能
Aug 18 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 Javascript
node.js使用fs读取文件出错的解决方案
Oct 23 Javascript
实现vuex与组件data之间的数据同步更新方式
Nov 12 Javascript
JS实现的雪花飘落特效示例
Dec 03 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
Feb 03 Javascript
序列化模块json代码实例详解
Mar 03 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
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
详解JavaScript中的链式调用
2020/11/27 Javascript
Python常用模块用法分析
2014/09/08 Python
Python松散正则表达式用法分析
2016/04/29 Python
Python实现针对中文排序的方法
2017/05/09 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
python实现括号匹配的思路详解
2018/08/23 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
Python可以实现栈的结构吗
2020/05/27 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
HTML5应用之文件上传
2016/12/30 HTML / CSS
演讲比赛的活动方案
2014/08/28 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
音乐研修感悟
2015/11/18 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书
100句拼搏进取的名言警句,值得一读!
2019/10/07 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python