javascript的函數有四種調用方式,每種方式的不同之處是在於初始化的不同,下面就以實例來說明四種函數方式的調用。
一、函數調用形式
這種方式最常見是,是直接聲明一個函數後調用,也是最常見的一種方式。
// 聲明一個函數,並調用
function func() {
alert("Hello World");
}
func();
// 使用函數的Lambda表達式定義函數,然後調用
var func = function() {
alert("你好,程序員");
};
func();
二、方法調用模式
函數調用模式很簡單,是最基本的調用方式。但是同樣的是函數,將其賦值給一個對象的成員以後,就不一樣了。將函數賦值給對象的成員後,那麼這個就不在稱爲函數,而應該叫做方法。例如:
// 定義一個函數
var func = function() {
alert("我是一個函數麼?");
};
// 將其賦值給一個對象
var o = {};
o.fn = func; // 注意這裏不要加圓括號
// 調用
o.fn();
三、構造器調用模式
這種模式是通過構造器建立對象後,來完成對函數的調用
// 定義一個構造函數
var Person = function() {
this.name = "程序員";
this.sayHello = function() {
alert("你好,這裏是" + this.name);
};
};
// 調用構造器,創建對象
var p = new Person();
// 使用對象
p.sayHello();
四、apply調用模式與call調用模式
// js1.js 文件中
var func1 = function() {
this.name = "程序員";
};
func1.apply(null);
alert(name);
// js2.js 文件
var func2 = function() {
this.name = "程序員";
};
var o = {};
func2.apply(o);
alert(o.name);
註解:第一個文件中的 name 屬性已經加載到全局對象 window 中; 而第二個文件中的 name 屬性是在傳入的對象 o 中,即第一個相當於函數調用,第二個相當 於方法調用。