关于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 相关文章推荐
学习YUI.Ext 第二天
Mar 10 Javascript
SWFObject Flash js调用类
Jul 08 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
Jan 12 Javascript
jquery的each方法使用示例分享
Mar 25 Javascript
Js实现滚动变色的文字效果
Jun 16 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
Dec 08 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
Oct 08 Javascript
javascript设计简单的秒表计时器
Sep 05 Javascript
创建一个类Person的简单实例
May 17 Javascript
详谈$.data()的用法和作用
Feb 13 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
Jun 12 Javascript
JS设计模式之策略模式概念与用法分析
Feb 05 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 stripos()函数及注意事项的分析
2013/06/08 PHP
php获取远程文件内容的函数
2015/11/02 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
php命令行模式代码实例详解
2021/02/26 PHP
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
jquery实现心算练习代码
2010/12/06 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
node.js中的fs.createWriteStream方法使用说明
2014/12/17 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
setTimeout学习小结
2017/02/08 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
原生js实现日历效果
2020/03/02 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
Python GAE、Django导出Excel的方法
2008/11/24 Python
Python正则表达式介绍
2012/08/06 Python
Python使用wxPython实现计算器
2018/01/30 Python
详解django.contirb.auth-认证
2018/07/16 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
监理员的岗位职责
2013/11/13 职场文书
安全生产中长期规划实施方案
2014/02/21 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
思想品德课教学反思
2016/02/24 职场文书