J**aScript函数的4种调用方法详解

时间:2016.04.20 发布人:g**iagdhcsi

J**aScript函数的4种调用方法详解

已解决问题

谷歌g**iagdhcsi用户在2016.04.20提交了关于“明王首辅J**aScript函数的4种调用方法详解”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-27T07:14:57。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,没有什么华丽的语言,但是我对你的感谢不会减少 !

希望以下的回答,能够帮助你。

第1个回答

用户名:串串烧aqal  

在J**aScript中,函数是一等公民,函数在J**aScript中是一个**类型,而非像C#或其他描述性语言那样仅仅作为一个模块来使用。函数有四种调用模式,分别是:函数调用形式、方法调用形式、构造器形式、以及apply形式。这里所有的调用模式中,最主要的区别在于关键字this的意义,下面分别介绍这个几种调用形式。

本文主要内容:

1.分析函数的四种调用形式
2.弄清楚函数中this的意义
3.明确构造函对象的过程
4.学会使用上下文调用函数

一、函数调用形式

函数调用形式是最常见的形式,也是最好理解的形式。所谓函数形式就是一般声明函数后直接调用即是。例如:
复制代码代码如下:
//声明一个函数,并调用
functionfunc(){
alert("h**elloWorld");
}
func();
或蘸
复制代码代码如下:
//使用函数的Lambda表达式定义函数,然后调用
varfunc=function(){
alert("你好,程序员");
};
func();
这两段代码都会在浏览器中出一个对话框,显示字符串中的文字,这个就是函数调用。

可以发现函数调用很简单,就是平时学习的一样,这里的关键是,在函数调用模式中,函数里的this关键字指全局对象,如果在浏览器中就是window对象。例如:
复制代码代码如下:
varfunc=function(){
alert(this);
};
func();
此时,会出对话框,打印出[objectWindow]。

二、方法调用模式

函数调用模式很简单,是最基本的调用方式。但是同样的是函数,将其赋值给一个对象的成栽后,就不一样了。将函数赋值给对象的成员后,那么这个就不在称为函数,而应该叫做方法。例如:
复制代码代码如下:
//定义一个函数
varfunc=function(){
alert("我是一个函数么?");
};
//将其赋值给一个对象
varo={};
o.fn=func;//注意这里不要加圆括号
//调用
o.fn();
此时,o.fn则是方法,不是函数了。实际上fn的方法体与func是一模一样的,但是这里有个微妙的不同。看下面的代码:
复制代码代码如下:
//接上面的代码
alert(o.fn===func);
打印结果是true,这个表明两个函数是一样的东西,但是修改一下函数的代码:

//修改函数体
varfunc=function(){
alert(this);
};
varo={};
o.fn=func;
//比较
alert(o.fn===func);
//调用
func();
o.fn();