js函数调用常用方法详解

 更新时间:2012年12月03日 16:21:18   投稿:whsnow  
js的函数调用会免费奉送两个而外的参数就是 this 和 arguments,我们所知道的应该有4中调用方式吧,接下来将为您详细介绍,感兴趣的朋友可以参考下

来源 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)});

相关文章

  • js关于字符长度限制的问题示例探讨

    js关于字符长度限制的问题示例探讨

    字符长度限制在某些特殊的使用场合还是比较实用的,下面为大家用示例探讨下,感兴趣的朋友可以参考下
    2014-01-01
  • 一篇文章让你彻底弄懂JS的事件冒泡和事件捕获

    一篇文章让你彻底弄懂JS的事件冒泡和事件捕获

    这篇文章主要介绍了一JS的事件冒泡和事件捕获,通过代码举例详细描述了两者之间的差别,需要的朋友可以参考下
    2017-08-08
  • 详解JavaScript中的表单验证

    详解JavaScript中的表单验证

    这篇文章主要介绍了JavaScript中的表单验证,是JS在前端和服务器端通信部分相关的重要知识,需要的朋友可以参考下
    2015-06-06
  • 深入理解 JS 垃圾回收

    深入理解 JS 垃圾回收

    JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,垃圾回收机制就是间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。下面我们来一起深入学习一下吧
    2019-06-06
  • JavaScript中的getTime()方法使用详解

    JavaScript中的getTime()方法使用详解

    这篇文章主要介绍了JavaScript中的getTime()方法使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06
  • MVC+Layui弹出表单模态框的实现代码

    MVC+Layui弹出表单模态框的实现代码

    这篇文章主要介绍了MVC+Layui弹出表单模态框的实现代码,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • 详解JavaScript中的变量命名规范

    详解JavaScript中的变量命名规范

    程序员三大难题:变量命名、缓存失效、循环边界。这篇文章主要为大家介绍了JavaScript中的变量命名规范,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-12-12
  • 深入理解JavaScript中的对象复制(Object Clone)

    深入理解JavaScript中的对象复制(Object Clone)

    下面小编就为大家带来一篇深入理解JavaScript中的对象复制(Object Clone)。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • 使用原生JS获取select元素选中的value和text值

    使用原生JS获取select元素选中的value和text值

    这篇文章介绍了使用原生JS获取select元素选中的value和text值,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • setTimeout和setInterval的深入理解

    setTimeout和setInterval的深入理解

    以前写的setTimeout和setInterval的文章有些不足之处,今天抽时间整理了一下,要想真正理解还得从javascript的单线程机制说起
    2013-11-11

最新评论