关于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 相关文章推荐
Array对象方法参考
Oct 03 Javascript
jQuery select操作控制方法小结
May 26 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
Apr 07 Javascript
使用js 设置url参数
Jul 08 Javascript
javascript 处理null及null值示例
Jun 09 Javascript
AngularJS 自定义过滤器详解及实例代码
Sep 14 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
Sep 23 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
无循环 JavaScript(map、reduce、filter和find)
Apr 08 Javascript
深入研究React中setState源码
Nov 17 Javascript
JS控制GIF图片的停止与显示
Oct 24 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
Mar 25 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计算两个路径的相对路径
2013/06/14 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
python实现每次处理一个字符的三种方法
2014/10/09 Python
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
Python的条件语句与运算符优先级详解
2015/10/13 Python
python 队列详解及实例代码
2016/10/18 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
物流管理应届生求职信
2013/11/07 职场文书
办理退休介绍信
2014/01/09 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
家长学校工作方案
2014/05/07 职场文书
幼师求职自荐信
2014/05/31 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
2014年纪委工作总结
2014/12/05 职场文书
辩论赛新闻稿
2015/07/17 职场文书
Nginx跨域问题解析与解决
2022/08/05 Servers