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