关于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 left,right,mid函数
Jun 10 Javascript
Javascript学习笔记2 函数
Jan 11 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
Nov 22 Javascript
EasyUI中实现form表单提交的示例分享
Mar 01 Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 Javascript
JavaScript Length 属性的总结
Nov 02 Javascript
Bootstrap每天必学之缩略图与警示窗
Nov 29 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
Oct 19 Javascript
微信小程序 radio单选框组件详解及实例代码
Jan 10 Javascript
vue父组件给子组件的组件传值provide inject的方法
Oct 23 Javascript
vue+axios全局添加请求头和参数操作
Jul 24 Javascript
Vue-router编程式导航的两种实现代码
Mar 04 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
B2K与车机的中波PK
2021/03/02 无线电
php中函数前加&符号的作用分解
2014/07/08 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
JS代码放在head和body中的区别分析
2011/12/01 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
vue axios用法教程详解
2017/07/23 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
python机器学习理论与实战(二)决策树
2018/01/19 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
python制作图片缩略图
2019/04/30 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
法律进社区实施方案
2014/03/21 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
旅游安全协议书
2014/04/21 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
教代会开幕词
2015/01/28 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书