关于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的MessageBox
Dec 03 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
Oct 11 Javascript
JavaScript图像延迟加载库Echo.js
Apr 05 Javascript
AngularGauge 属性解析详解
Sep 06 Javascript
详解react-webpack2-热模块替换[HMR]
Aug 03 Javascript
js推箱子小游戏步骤代码解析
Jan 10 Javascript
react-native封装插件swiper的使用方法
Mar 20 Javascript
postman+json+springmvc测试批量添加实例
Mar 31 Javascript
玩转vue的slot内容分发
Sep 22 Javascript
详解easyui 切换主题皮肤
Apr 04 Javascript
微信小程序页面传多个参数跳转页面的实现方法
May 17 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
Jul 22 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 代码优化的42条建议 推荐
2009/09/25 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
详解重置Django migration的常见方式
2019/02/15 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
有针对性的求职自荐信
2013/11/14 职场文书
数控专业应届生求职信
2013/11/27 职场文书
给老婆的婚前保证书
2014/02/01 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
三严三实心得体会范文
2014/10/13 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis