关于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 相关文章推荐
Javascript的常规数组和关联数组对比小结
May 24 Javascript
浅析js设置控件的readonly与enabled属性问题
Dec 25 Javascript
动态的绑定事件addEventListener方法的使用
Jan 24 Javascript
vue.js简单配置axios的方法详解
Dec 13 Javascript
Vue仿今日头条实例详解
Feb 06 Javascript
Vue中props的使用详解
Jun 15 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
Mar 01 Javascript
微信小程序云开发之使用云数据库
May 17 Javascript
小程序如何获取多个formId实现详解
Sep 20 Javascript
Jquery异步上传文件代码实例
Nov 13 jQuery
基于Vue CSR的微前端实现方案实践
May 27 Javascript
Vue+axios封装请求实现前后端分离
Oct 23 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函数eval()介绍和使用示例
2014/08/20 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
Javascript Math对象
2009/08/13 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
Python自动化测试工具Splinter简介和使用实例
2014/05/13 Python
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
详解Python当中的字符串和编码
2015/04/25 Python
深入浅析Python中的yield关键字
2018/01/24 Python
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
销售辞职报告范文
2014/01/12 职场文书
招标授权委托书样本
2014/09/23 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
事业单位年度考核评语
2014/12/31 职场文书
长江三峡导游词
2015/01/31 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
JavaScript前端面试组合函数
2022/06/21 Javascript