关于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 相关文章推荐
popdiv
Jul 14 Javascript
FireFox与IE 下js兼容触发click事件的代码
Nov 20 Javascript
jquery实现checkbox全选全不选的简单实例
Dec 31 Javascript
兼容主流浏览器的JS复制内容到剪贴板
Dec 12 Javascript
程序员必知35个jQuery 代码片段
Nov 05 Javascript
跟我学习javascript的异步脚本加载
Nov 20 Javascript
JS简单去除数组中重复项的方法
Sep 13 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 Javascript
浅谈Node.js 子进程与应用场景
Jan 24 Javascript
Ionic学习日记实现验证码倒计时
Feb 08 Javascript
手动用webpack搭建第一个ReactApp的示例
Apr 11 Javascript
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
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 在线翻译函数代码
2009/05/07 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
Python入门篇之条件、循环
2014/10/17 Python
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
Python PIL图片添加字体的例子
2019/08/22 Python
Django实现分页显示效果
2019/10/31 Python
Python接口开发实现步骤详解
2020/04/26 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
数控专业个人求职信范文
2014/02/05 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
javascript的setTimeout()使用方法总结
2021/11/20 Javascript
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技