摘要:函數(shù)對(duì)象連接到。好處有助于確保全局名字空間的純凈性私有性保留了自己的函數(shù),不為外部應(yīng)用程序所用返回自己的函數(shù)函數(shù)始終有一個(gè)返回值,即便不是顯示返回,它們會(huì)隱式返回一個(gè)。
函數(shù) 概念:
函數(shù)對(duì)象:函數(shù)包含一組語(yǔ)句,它們是javaScript基礎(chǔ)模塊單元,用于代碼復(fù)用、信息隱藏和組合調(diào)用。用于指定對(duì)象的行為。
函數(shù)定義javascrtipt中的函數(shù)就是對(duì)象。對(duì)象是‘名/值’對(duì)的集合并擁有一個(gè)連到原型對(duì)象的隱藏連接。 對(duì)象字面量產(chǎn)生產(chǎn)生的對(duì)象連接到Object.prototype。函數(shù)對(duì)象連接到Function.prototype。每個(gè)函數(shù)在創(chuàng)建時(shí)會(huì)附加兩個(gè)屬性,函數(shù)的上下文和函數(shù)實(shí)現(xiàn)的代碼
有三種方式可以定義函數(shù)
1. 使用函數(shù)聲明語(yǔ)法·定義函數(shù)
function sum(sum1,sum2){ return num1+num2; }
2. 使用函數(shù)表達(dá)式定義函數(shù):
var sum = function(sum1, sum2){ return num1+num2; }
3. 構(gòu)造函數(shù)
function Person() { this.name = "a"; return; }函數(shù)參數(shù):
當(dāng)函數(shù)被調(diào)用時(shí),會(huì)得到一個(gè)“免費(fèi)”分配的參數(shù):argument數(shù)組。函數(shù)可以通過(guò)此參數(shù)訪問(wèn)所有它被調(diào)用時(shí)傳遞給它的參數(shù)列表,包括那些沒(méi)有被分配給函數(shù)聲明時(shí)定義的形式參數(shù)。它只是一個(gè)類(lèi)數(shù)組,擁有一個(gè)Length屬性,但沒(méi)有數(shù)組的任何方法。
//可以不指定參數(shù)個(gè)數(shù) function add(){ var sum = 0; for(var i = 0, l = arguments.length; i < l; i++){ sum += arguments[i]; } return sum; } add(1,2,3);//6函數(shù)返回:
函數(shù)調(diào)用:return可以用來(lái)使函數(shù)提前返回,如果沒(méi)有指定,則返回undefined。
如果函數(shù)調(diào)用時(shí)在前面加上new前綴,且返回值不是一個(gè)對(duì)象,則返回this(該新對(duì)象)。
javaScript一共有4中調(diào)用模式:方法調(diào)用模式,函數(shù)調(diào)用模式,構(gòu)造器調(diào)用模式和apply調(diào)用模式。
調(diào)用運(yùn)算符是函數(shù)表達(dá)式后的一對(duì)圓括號(hào)。
方法調(diào)用模式
當(dāng)函數(shù)被保存為對(duì)象屬性時(shí),稱他為一個(gè)方法。當(dāng)一個(gè)方法被調(diào)用時(shí),this被綁定到該對(duì)象。
var myObject = { value:0, increment:function(inc){ this.value += typeof inc === "number"?inc:1; } }; myObject.increment(2); myObject.value//3
?函數(shù)調(diào)用模式
當(dāng)函數(shù)并非一個(gè)對(duì)象的屬性時(shí),就是當(dāng)作函數(shù)調(diào)用的
var sum = add(1,2);
構(gòu)造器調(diào)用模式
//創(chuàng)建一個(gè)名為Quo的構(gòu)造函數(shù)。構(gòu)造一個(gè)帶有status的屬性 var Quo = function(string){ this.status = string; }; //給Quo的所有實(shí)例提供一個(gè)名為get_status的公共方法。 Quo.prototype.get_status = function(){ return this.status; }; //構(gòu)建一個(gè)Quo的實(shí)例 var myQuo = new Quo("confused"); document.writeln(myQuo.get_status());//confused
? apply調(diào)用模式
因?yàn)閖avaScript是一門(mén)函數(shù)式的面對(duì)對(duì)象編程語(yǔ)言,所以函數(shù)可以擁有方法。
apply方法讓我們構(gòu)建一個(gè)參數(shù)數(shù)組傳遞給調(diào)用函數(shù)。它允許我們選擇this值。apply方法接收兩個(gè)參數(shù),第一個(gè)是要綁定給this的值,第二個(gè)是參數(shù)數(shù)組。
// 構(gòu)造一個(gè)包含兩個(gè)數(shù)字的數(shù)組,并把它們相加 var statusObject = { status:"A-Ok" }; var status = Quo.prototype.get_status.apply(statusObject);匿名函數(shù):
function(a){ return a; }
用法;
將匿名函數(shù)作為參數(shù)傳遞給其他函數(shù)。這樣接收方函數(shù)就你利用我們所傳遞的函數(shù)來(lái)完成一些事情。(也就是回調(diào)函數(shù))
定義某個(gè)匿名函數(shù)來(lái)執(zhí)行某些一次性任務(wù)。(也就是自調(diào)函數(shù))
回調(diào)函數(shù):把函數(shù)當(dāng)成參數(shù)傳遞給其他函數(shù)
//add就是回調(diào)函數(shù),如果add為匿名函數(shù),就稱它為匿名回調(diào)函數(shù) function add(a,b){ return a() + b (); } function a(){ return 1; } function b(){ return 2; } add(a,b);//3自調(diào)函數(shù):
自行調(diào)用的函數(shù):
(function(){ alert("foo"); })()//第二對(duì)括號(hào)起到立即調(diào)用的作用,同時(shí)也是傳遞參數(shù)的地方
好處:使用自調(diào)匿名函數(shù)不會(huì)產(chǎn)生任何全局變量。但也無(wú)法重復(fù)執(zhí)行。比較適合執(zhí)行一些一次性或初始化的任務(wù)。
function a(param){ function b(theinput){ return theinput*2; } return "The result is " + b(param); } a(2);//The result is 4 b(2);//b is not define
好處:
有助于確保全局名字空間的純凈性
私有性:保留了自己的函數(shù),不為外部應(yīng)用程序所用
返回自己的函數(shù):函數(shù)始終有一個(gè)返回值,即便不是顯示返回,它們會(huì)隱式返回一個(gè)undefined。也可能是返回另一個(gè)函數(shù)。
function a(){ alert("A!"); return function(){ alert("B!"); } } a()();//可以直接加上括號(hào)執(zhí)行能重寫(xiě)自己的函數(shù):
由于一個(gè)函數(shù)可以返回另一個(gè)函數(shù),因此我們也可以用新的函數(shù)來(lái)覆蓋舊的。
function a(){ alert("A!"); a = function(){ alert("B!"); }; } 這樣一來(lái),第一次調(diào)用該函數(shù)時(shí): alert("A!")會(huì)被執(zhí)行(可以看為一次性的操作) 全局變量會(huì)被重新定義,被賦予新的函數(shù) 如果再次被調(diào)用將執(zhí)行alert("B!");
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/91010.html
摘要:一面向?qū)ο蟪醪秸J(rèn)識(shí)什么是對(duì)象一句話解釋萬(wàn)物皆對(duì)象對(duì)象是有屬性的用來(lái)寫(xiě)入對(duì)象的應(yīng)用接口接口簡(jiǎn)單的說(shuō)就是后臺(tái)提供給前端提供數(shù)據(jù)的,讓我們進(jìn)行渲染請(qǐng)求接口的時(shí)候我們會(huì)用到一個(gè)函數(shù)小例子代碼如下背心吊帶無(wú)袖打底衫內(nèi)搭 一、面向?qū)ο蟪醪秸J(rèn)識(shí) 1.什么是對(duì)象? 一句話解釋: 萬(wàn)物皆對(duì)象 對(duì)象是有屬性的:用{ }來(lái)寫(xiě)入! 2.對(duì)象的應(yīng)用(接口) jsonshowImg(https://segment...
摘要:一面向?qū)ο蟪醪秸J(rèn)識(shí)什么是對(duì)象一句話解釋萬(wàn)物皆對(duì)象對(duì)象是有屬性的用來(lái)寫(xiě)入對(duì)象的應(yīng)用接口接口簡(jiǎn)單的說(shuō)就是后臺(tái)提供給前端提供數(shù)據(jù)的,讓我們進(jìn)行渲染請(qǐng)求接口的時(shí)候我們會(huì)用到一個(gè)函數(shù)小例子代碼如下背心吊帶無(wú)袖打底衫內(nèi)搭 一、面向?qū)ο蟪醪秸J(rèn)識(shí) 1.什么是對(duì)象? 一句話解釋: 萬(wàn)物皆對(duì)象 對(duì)象是有屬性的:用{ }來(lái)寫(xiě)入! 2.對(duì)象的應(yīng)用(接口) jsonshowImg(https://segment...
摘要:一面向?qū)ο蟪醪秸J(rèn)識(shí)什么是對(duì)象一句話解釋萬(wàn)物皆對(duì)象對(duì)象是有屬性的用來(lái)寫(xiě)入對(duì)象的應(yīng)用接口接口簡(jiǎn)單的說(shuō)就是后臺(tái)提供給前端提供數(shù)據(jù)的,讓我們進(jìn)行渲染請(qǐng)求接口的時(shí)候我們會(huì)用到一個(gè)函數(shù)小例子代碼如下背心吊帶無(wú)袖打底衫內(nèi)搭 一、面向?qū)ο蟪醪秸J(rèn)識(shí) 1.什么是對(duì)象? 一句話解釋: 萬(wàn)物皆對(duì)象 對(duì)象是有屬性的:用{ }來(lái)寫(xiě)入! 2.對(duì)象的應(yīng)用(接口) jsonshowImg(https://segment...
摘要:函數(shù)式編程不是一個(gè)框架或工具,而是一種編寫(xiě)代碼的方式。函數(shù)式編程首先是一個(gè)聲明式編程范例。舉個(gè)例子純函數(shù)函數(shù)式編程基于的前提是您將基于純函數(shù)構(gòu)建不可變的程序作為業(yè)務(wù)邏輯的構(gòu)建塊。 showImg(https://segmentfault.com/img/remote/1460000012402865?w=693&h=339); 最近朋友推薦這本書(shū):Functional PHP ,很多對(duì)...
摘要:一初步認(rèn)識(shí)所謂的就是我們之前說(shuō)的也就是一種通過(guò)縮進(jìn)的方式來(lái)編寫(xiě)代碼的過(guò)程,在編譯的過(guò)程中,我們不需要考慮標(biāo)簽是否閉合的問(wèn)題。使用縮進(jìn)來(lái)表示標(biāo)簽間的嵌套關(guān)系,這樣可以構(gòu)建一個(gè)代碼的樹(shù)狀結(jié)構(gòu)持續(xù)更新,歡迎大家指教 一、初步認(rèn)識(shí)pug 1.所謂的pug就是我們之前說(shuō)的jade,也就是一種通過(guò)縮進(jìn)的方式來(lái)編寫(xiě)代碼的過(guò)程,在編譯的過(guò)程中,我們不需要考慮標(biāo)簽是否閉合的問(wèn)題。此外,用這種編譯方式,加...
閱讀 1745·2021-11-15 11:38
閱讀 4635·2021-09-22 15:33
閱讀 2406·2021-08-30 09:46
閱讀 2253·2019-08-30 15:43
閱讀 898·2019-08-30 14:16
閱讀 2149·2019-08-30 13:09
閱讀 1347·2019-08-30 11:25
閱讀 770·2019-08-29 16:42