js函数调用常用方法详解


Posted in Javascript onDecember 03, 2012

来源 javascript语言精粹。这不是书上的源代码。
js的函数调用会免费奉送两个而外的参数就是 this 和 arguments 。arguments是参数组,他并不是一个真实的数组,但是可以使用.length方法获得长度。
书上有说4中调用方式:
方法调用模式
函数调用模式
构造器调用模式
apply调用模式

下面我们来看看一些实例更好理解。
1:方法调用模式
请注意this此时指向myobject。

/*方法调用模式*/ 
var myobject={ 
value:0, 
inc:function(){ 
alert(this.value) 
} 
} 
myobject.inc()

2:函数调用模式
请注意this此时指向window。
/*函数调用模式*/ 
var add=function(a,b){ 
alert(this)//this被绑顶到window 
return a+b; 
} 
var sum=add(3,4); 
alert(sum)

3:构造器调用模式
javascript语言精粹一书建议摒弃这中方式。因为有更好的方式。这里先不介绍。下次发表博文的时候贴出来。
会在这里加一个连接。
/*构造器调用模式 摒弃*/ 
var quo=function(string){ 
this.status=string; 
} 
quo.prototype.get_status=function(){ 
return this.status; 
} 
var qq=new quo("aaa"); 
alert(qq.get_status());

4:apply调用模式
==我们可以来看一个更有用的apply实例。看最下面的代码。
/*apply*/ 
//注意使用了上面的sum函数 
//与myobject 
//这中调用方式的优点在于可以指向this指向的对象。 
//apply的第一个参数就是this指针要指向的对象 
var arr=[10,20]; 
var sum=add.apply(myobject,arr); 
alert(sum);

看这个apply真正应用。bind这是一个绑定时间的函数。
var bind=function(object,type,fn){ 
if(object.attachEvent){//IE浏览器 
object.attachEvent("on"+type,(function(){ 
return function(event){ 
window.event.cancelBubble=true;//停止时间冒泡 
object.attachEvent=[fn.apply(object)];//----这里我要讲的是这里 
//在IE里用attachEvent添加一个时间绑定以后。 
//this的指向不是到object对象本身所以。我们绑定的function里的this.id是无法正常工作的。 
//但是如果我们用fn.apply(object) 
//这里可以看出我们是把apply的第一个对象也就是this的指向变更给了object所以this.id就变成了 
//object.id 可以正常工作了。 
} 
})(object),false); 
}else if(object.addEventListener){//其他浏览器 
object.addEventListener(type,function(event){ 
event.stopPropagation();//停止时间冒泡 
fn.apply(this) 
}); 
} 
} 
bind(document.getElementById("aaa"),"click",function(){alert(this.id)});
Javascript 相关文章推荐
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
Jan 22 Javascript
Chrome Form多次提交表单问题的解决方法
May 09 Javascript
JavaScript之引用类型介绍
Aug 10 Javascript
jQuery获得子元素个数的方法
Apr 14 Javascript
JS获取文件大小方法小结
Dec 08 Javascript
微信小程序 toast 详解及实例代码
Nov 09 Javascript
JS轮播图中缓动函数的封装
Nov 25 Javascript
js cookie实现记住密码功能
Jan 17 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
Apr 14 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
Oct 16 Javascript
js实现简单模态框实例
Nov 16 Javascript
原生JavaScript实现轮播图
Jan 10 Javascript
JS随即打乱数组实现代码
Dec 03 #Javascript
JS图片预加载 JS实现图片预加载应用
Dec 03 #Javascript
输入密码检测大写是否锁定js实现代码
Dec 03 #Javascript
js操作textarea 常用方法总结
Dec 03 #Javascript
javascript object array方法使用详解
Dec 03 #Javascript
让AJAX不依赖后端接口实现方案
Dec 03 #Javascript
Javascript在IE和FireFox中的不同表现简析
Dec 03 #Javascript
You might like
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
CodeIgniter 完美解决URL含有中文字符串
2016/05/13 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
javascript下function声明一些小结
2007/12/28 Javascript
js GridView 实现自动计算操作代码
2009/03/25 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
javascript中闭包(Closure)详解
2016/01/06 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
用Python的urllib库提交WEB表单
2009/02/24 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
学习和使用python的13个理由
2019/07/30 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
python实现图片素描效果
2020/09/26 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
Python中过滤字符串列表的方法
2020/12/22 Python
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
俄语专业职业生涯规划
2014/02/26 职场文书
入职担保书范文
2014/05/21 职场文书
中文专业求职信
2014/06/20 职场文书
2015年化验员工作总结
2015/04/10 职场文书
男人帮观后感
2015/06/18 职场文书
聊一聊python常用的编程模块
2021/05/14 Python