关于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 实现图片直接下载示例代码
Jul 22 Javascript
解析Javascript中难以理解的11个问题
Dec 09 Javascript
JavaScript里四舍五入函数round用法实例
Apr 06 Javascript
Bootstrap每天必学之简单入门
Nov 19 Javascript
浅谈javascript中new操作符的原理
Jun 07 Javascript
JavaScript手风琴页面制作
May 17 Javascript
Angular使用cli生成自定义文件、组件的方法
Sep 04 Javascript
微信小程序开发的基本流程步骤
Jan 31 Javascript
vue-cli 3 全局过滤器的实例代码详解
Jun 03 Javascript
js实现无缝滚动双图切换效果
Jul 09 Javascript
利用原生JS实现欢乐水果机小游戏
Apr 23 Javascript
Vue自定义组件双向绑定实现原理及方法详解
Sep 03 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中用文本文件做数据库的实现方法
2008/03/27 PHP
laravel请求参数校验方法
2019/10/10 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
简单理解vue中Props属性
2016/10/27 Javascript
对于js垃圾回收机制的理解
2017/09/14 Javascript
详解.vue文件解析的实现
2018/06/11 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
Vue 3.0中jsx语法的使用
2020/11/13 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
python实现顺时针打印矩阵
2019/03/02 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
flask项目集成swagger的方法
2020/12/09 Python
django使用多个数据库的方法实例
2021/03/04 Python
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
教师应聘个人求职信
2013/12/10 职场文书
项目经理岗位职责
2015/01/31 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
革命电影观后感
2015/06/18 职场文书
整脏治乱工作简报
2015/07/21 职场文书
MySQL 服务和数据库管理
2021/11/11 MySQL
python数字图像处理:图像简单滤波
2022/06/28 Python