這篇文章給大家介紹JavaScript中如何定義函數(shù),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供丁青網(wǎng)站建設(shè)、丁青做網(wǎng)站、丁青網(wǎng)站設(shè)計、丁青網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、丁青企業(yè)網(wǎng)站模板建站服務(wù),十年丁青做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
1、 函數(shù)式聲明
function funName(arg1, arg2){ alert(arg1 + “,” + arg2); } |
特點:此種方式可定義命名的函數(shù)變量,而無需給變量賦值,這是一種獨立的結(jié)構(gòu),不能嵌套在非功能模塊中。函數(shù)名在自身作用域和父作用域內(nèi)是可獲取的(其他域是娶不到的)。當(dāng)解析器讀取js代碼時,會先讀取函數(shù)的聲明,此種方式定義的函數(shù)在執(zhí)行任何代碼之前都可以訪問(調(diào)用)。
2、 函數(shù)表達(dá)式(函數(shù)字面量)
var fun = function(arg1, arg2){ alert(arg1 + “,” + arg2); }
|
var fun = function funName(arg1,arg2){ alert(arg1 + “,” + arg2); } |
(function hello(){ alert(“HelloWorld!!!”); })(); // 自調(diào)用 |
特點:地中方式是將函數(shù)定義為表達(dá)式語句的一部分。函數(shù)可以是命名的也可以是匿名的。而且必須等到解析器執(zhí)行到它所在的代碼行才能真正被解釋執(zhí)行。
3、 函數(shù)構(gòu)造法,參數(shù)必須加引號
var fun = new Function(‘a(chǎn)rg1’, ‘a(chǎn)rg2’, ‘a(chǎn)lert(arg1 + “,” + arg2)’); |
特點:從技術(shù)角度講,這是一個函數(shù)表達(dá)式。但是一般不推薦這種方式。
4、 對象直接量
var obj = { name : “”, getName : function(){ return this.name; }, setName : function(name){ this.name = name; } }; |
特點:將方法的定義看做為一個對象的成員變量,此時對象的變量值為一個方法,通過訪問該對象的屬性名稱,達(dá)到調(diào)用方法的效果。
5、 原型繼承
var obj = new Function(); obj.prototype = { name : “”, getName : function(){ return this.name; }, setName : function(name){ this.name = name; } }; |
特點:定義了一個函數(shù)對象,在其原型對象中定義方法。在使用prototype的方法時,必須實例化該對象才能調(diào)用其方法。
6、 工廠模式
function obj(){ var temp = new Object(); temp.name = “”; temp.getName = function(){ return this.name; }; temp.setName(name){ this.name = name; }; return temp; } |
特點:工廠模式是軟件工程領(lǐng)域一種廣為人知的設(shè)計模式,由于在ECMAScript中無法創(chuàng)建類,因此用函數(shù)封裝以特定接口創(chuàng)建對象。即在一個函數(shù)內(nèi)創(chuàng)建一個對象,給對象賦予屬性和方法再將其對象返回。
關(guān)于JavaScript中如何定義函數(shù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。