关于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 相关文章推荐
Eclipse去除js(JavaScript)验证错误
Feb 11 Javascript
javascript获取系统当前时间的方法
Nov 19 Javascript
JavaScript页面实时显示当前时间实例代码
Oct 23 Javascript
基于node.js之调试器详解
Aug 22 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
Nov 02 Javascript
解决iview多表头动态更改列元素发生的错误的方法
Nov 02 Javascript
Nginx设置为Node.js的前端服务器方法总结
Mar 27 Javascript
Vue动态修改网页标题的方法及遇到问题
Jun 09 Javascript
微信小程序Echarts图表组件使用方法详解
Jun 25 Javascript
JavaScript多种滤镜算法实现代码实例
Dec 10 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 Javascript
原生JavaScript实现留言板
Jan 10 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
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &
2010/02/09 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
文本加密解密
2006/06/23 Javascript
一个tab标签切换效果代码
2009/03/27 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
详解Python命令行解析工具Argparse
2016/04/20 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
电气技术员岗位职责
2013/11/19 职场文书
语文教育专业应届生求职信
2013/11/23 职场文书
学前教育学生自荐信范文
2013/12/31 职场文书
全神贯注教学反思
2014/02/03 职场文书
安全教育实施方案
2014/03/02 职场文书
幼教求职信
2014/03/12 职场文书
网络编辑岗位职责
2014/03/18 职场文书
施工安全承诺书
2014/05/22 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
单位单身证明样本
2014/10/11 职场文书
python编写函数注意事项总结
2021/03/29 Python
python 爬取吉首大学网站成绩单
2021/06/02 Python