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和Asp、Php等后端程序间传值编码统一
Apr 17 Javascript
菜鸟学习JavaScript小实验之函数引用
Nov 17 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
Jul 17 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
Jan 19 Javascript
jquery动态创建div与input的实例代码
Oct 12 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
Nov 15 Javascript
jQuery弹出窗口简单实现代码
Mar 09 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
Oct 27 jQuery
加快Vue项目的开发速度的方法
Dec 12 Javascript
动态内存分配导致影响Javascript性能的问题
Dec 18 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
Apr 23 Javascript
基于Element封装一个表格组件tableList的使用方法
Jun 29 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
微信自定义分享php代码分析
2016/11/24 PHP
PHP中“=>
2019/03/01 PHP
Jquery实现简单的动画效果代码
2012/03/18 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
ArtEditor富文本编辑器增加表单提交功能
2016/04/18 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
Python装饰器使用示例及实际应用例子
2015/03/06 Python
Python实现简单登录验证
2016/04/13 Python
浅谈Python的异常处理
2016/06/19 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
wxPython实现绘图小例子
2019/11/19 Python
Python 支持向量机分类器的实现
2020/01/15 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
python爬取音频下载的示例代码
2020/10/19 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
为什么使用接口?
2014/08/13 面试题
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
Linux操作面试题
2012/05/16 面试题
工作失误检讨书范文大全
2014/01/13 职场文书
大学班级文化建设方案
2014/05/06 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
个人维稳承诺书
2015/05/04 职场文书