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 相关文章推荐
5 cool javascript apps
Mar 24 Javascript
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
Apr 08 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
Dec 31 Javascript
js中使用replace方法完成某个字符的转换
Aug 20 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
Nov 23 Javascript
微信小程序 picker 组件详解及简单实例
Jan 10 Javascript
详解vue-cli开发环境跨域问题解决方案
Jun 06 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
Aug 04 jQuery
利用angular自动编译andriod APK的绕坑经历分享
Mar 08 Javascript
layer.open的自适应及居中及子页面标题的修改方法
Sep 05 Javascript
浅析JavaScript 函数柯里化
Sep 08 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同时支持GIF、png、JPEG
2006/10/09 PHP
php 缩略图实现函数代码
2011/06/23 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
2011/09/29 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
2020/01/26 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
python多进程实现文件下载传输功能
2018/07/28 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
全球立体声:World Wide Stereo
2018/09/29 全球购物
教师产假请假条范文
2014/04/10 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
中学总务处工作总结
2015/08/12 职场文书
岗位聘任协议书
2015/09/21 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
vue+element ui实现锚点定位
2021/06/29 Vue.js
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers