关于js类的定义


Posted in Javascript onJune 28, 2011

遇到的问题,首先是js对象的封装,js没有提供类的机制,唯一的内置类是function类,也就是说所有的函数都是function类的实例化对象。不过依靠这个唯一的类我们可以模拟定义一个新的类。
首先想到的,是直接用function生成定义完整的类:

function myClass(arg,...) 
{ 
this.attributeName; 
this.functionName = function(){}; 
}

不过这样有一个问题,每当我new一个新的myClass实例的时候,内部的function都会重新开辟空间,返回引用给functionName。但这个和我们设想的类不一致,浪费空间,而且理论上类的function应该是共享的。

更合理的做法,一是在类外定义函数,然后类内将函数指针赋值给functionName,另一种是在类外myClass.prototype.functionName = function(){}。这两种都是不错的选择,其中第二个看起来更接近类的定义。
接下来var newObj = new myClass();大功告成。

关于js(二)无名函数
无名函数,其中一个作用可能是生成新的函数对象的引用,主要是用于定义。
另一个用处就是针对js中一些无法含参的回调函数而言的。

明显的例子就是setInterval,我想这是很多人头疼的一个函数,尤其是你想在回调函数中添加参数的时候。
而且最叫人头疼的是,DHTML不是w3c规定的标准,于是不同的浏览器给出的setInterval参数表还不一样。。。
就我测试的两款浏览器来说(IE内核,webkit内核)
IE:setInvterval(function, msecond [,lang]);
chrome:setInterval(function, msecond [, pram1, pram2, ....]);
也就是说,chrome里面是允许对function添加参数的,参数表在最后边。然而IE最后一个参数的作用是标明所用的脚本语言种类,因为IE除了js还支持vbs等其他的脚本语言。

为了解决兼容性,只好用到无名函数。。。

function test(yourArg) 
{ 
var arg = yourArg; 
setInterval(function(){callback(arg)}, time); 
}
Javascript 相关文章推荐
广告代码静态化js通用函数
May 09 Javascript
JavaScript 滚轮事件使用说明
Mar 07 Javascript
js中有关IE版本检测
Jan 04 Javascript
JavaScript实现数字数组按照倒序排列的方法
Apr 06 Javascript
JavaScript常用数组算法小结
Feb 13 Javascript
JS DOM实现鼠标滑动图片效果
Sep 17 Javascript
浅谈JavaScript 浏览器对象
Jun 03 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
Jun 02 Javascript
node通过express搭建自己的服务器
Sep 30 Javascript
vue cli 3.0 使用全过程解析
Jun 14 Javascript
JavaScript日期库date-fn.js使用方法解析
Sep 09 Javascript
JS高级程序设计之class继承重点详解
Jul 07 Javascript
js 编程笔记 无名函数
Jun 28 #Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
Jun 28 #Javascript
基于jquery的回到页面顶部按钮
Jun 27 #Javascript
jQuery新闻滚动插件 jquery.roller.js
Jun 27 #Javascript
jquery中获取select选中值的代码
Jun 27 #Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
Jun 27 #Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
Jun 27 #Javascript
You might like
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
客户端静态页面玩分页
2006/06/26 Javascript
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
2015/08/26 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
简单说明Python中的装饰器的用法
2015/04/24 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
python中的列表与元组的使用
2019/08/08 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
pytorch方法测试——激活函数(ReLU)详解
2020/01/15 Python
python如何对链表操作
2020/10/10 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
美国手机支架公司:PopSockets
2019/11/27 全球购物
Java基础知识面试要点
2016/07/29 面试题
酒店保安员岗位职责
2014/01/31 职场文书
《阳光》教学反思
2014/02/23 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
初中学生期末评语
2014/04/24 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB
python turtle绘图
2022/05/04 Python