摘要:返回相加的和永遠(yuǎn)也不會(huì)執(zhí)行函數(shù)參數(shù)聲明函數(shù)時(shí)沒有給參數(shù),但調(diào)用函數(shù)時(shí)會(huì)傳參。當(dāng)網(wǎng)頁在全局作用域中調(diào)用函數(shù)時(shí),這個(gè)對(duì)象引用的就是。
函數(shù)
通過函數(shù)可以封裝任意多條語句,可以在任何地方,任何時(shí)候調(diào)用執(zhí)行。每個(gè)函數(shù)都是function類型的實(shí)例,和其他引用類型一樣具有屬性和方法。
把函數(shù)保存為對(duì)象中的一個(gè)屬性時(shí),該屬性稱之為方法。
普通聲明方式
function sum (){ return num1 + num2; }
使用變量初始化函數(shù)
var sum = function(num1,num2){ return num1 + num2; }
使用function構(gòu)造函數(shù),這種方法不推薦。這種方法便于理解“函數(shù)是對(duì)象,函數(shù)名是指針”的概念。
var sum = new Function("num1","num2","return num1 + num2");
delete可刪除屬性,用法delete.a.name
作為值的函數(shù)任何函數(shù)在任何時(shí)候都可以通過return語句來返回值。需要注意的是位于return語句之后的一句語句永遠(yuǎn)不會(huì)執(zhí)行。
調(diào)用函數(shù)(方法)如果沒有圓括號(hào),會(huì)打印函數(shù)代碼,有括號(hào)才會(huì)打印函數(shù)值。
function sum(num1,num2){ return num1 + num2; //返回 num1 + num2 相加的和 alert("Hello world!"); //永遠(yuǎn)也不會(huì)執(zhí)行 }函數(shù)參數(shù)
聲明函數(shù)時(shí)沒有給參數(shù),但調(diào)用函數(shù)時(shí)會(huì)傳參。
函數(shù)內(nèi)部可用argument方法獲取,配合length使用可動(dòng)態(tài)傳參。
function sum(){ if(arguments.length == 1){ alret(arguments[0] + 10); }else if(arguments.length == 2){ alert(arguments[0] + arguments[1] + 10); } } sum(10) //打印20 sum(10,20) //打印40JavaScript 函數(shù)沒有重載
重載是根據(jù)參數(shù),選擇相同函數(shù)名而參數(shù)不同的函數(shù)。
階乘函數(shù)function factorial(){ if(num < 1){ return 1; }else{ return num * arguments.callee(num -1);//arguments.callee調(diào)用自身函數(shù)。這里調(diào)用的是factorial函數(shù)。 } }this
this引用的是函數(shù)執(zhí)行的環(huán)境對(duì)象,也就是函數(shù)調(diào)用語句所處的那個(gè)作用域。當(dāng)網(wǎng)頁在全局作用域中調(diào)用函數(shù)時(shí),這個(gè)this對(duì)象引用的就是window。window是一個(gè)對(duì)象,而且是JS里最大的對(duì)象,是最外圍的對(duì)象。
var color = "red"; //這里color是全局變量,而這變量又是window的屬性 alert{window.color}; //打印"red",這說明color是window下的屬性 alert(this.color); //同上
window.color = "red"; //相當(dāng)于 var color = "red" alert(this.color); //打印"red" var o ={ color: "blue"; //這里的color是o下的屬性,也就是局部變量 sayColor: function(){ alert(this.color); //這里的this代表的是o對(duì)象 } }; o.sayColor(); //打印"blue"
下面的代碼其實(shí)和上面是一樣的,只是將sayColor()函數(shù)作為方法賦值給o,然后在通過o來調(diào)用它
window.color = "red"; //全局 var o = {color: "blue"}; //局部 function sayColor(){ alert(this.color); //這里執(zhí)行的時(shí)候是動(dòng)態(tài)的,第一次指向window,第二次指向sayColor } sayColor(); //打印"red",因?yàn)檫@里是在window下的 o.sayColor = sayColor; //這里是吧把sayColor作為方法賦值給o,這樣的話this就指代o了 o.sayColor(); //這里執(zhí)行的是box里面的this.color,也就是說這里this指向了boxprototype
prototype是保存他們所有實(shí)例方的真正所在,toString和valueOf等方法都是保存在peototype名下,只不過是通過各自對(duì)象的實(shí)例訪問。
每個(gè)函數(shù)都包含兩個(gè)非繼承而來的方法:apply()和call()這兩個(gè)方法的用途都是在特定的作用域中調(diào)用函數(shù),實(shí)際上等于設(shè)置函數(shù)體內(nèi)this對(duì)象的值。
apple()接收兩個(gè)參數(shù),一個(gè)是其中運(yùn)行函數(shù)的作用域,另一個(gè)是參數(shù)數(shù)組。
call()與apple()方法一樣,區(qū)別是call()方法傳遞給函數(shù)的參數(shù)必須逐個(gè)傳。
function sum(num1,num2){ return num1 + num2; } function sum1(nu1,num2){ return sum.apply(this,arguments); //arguments可以當(dāng)數(shù)值傳,等于下面的[num1,num2];this表示window作用域 } function sum2(nu1,numw){ return sum.apply(this,[num1,num2]); //apply可以冒充另一個(gè)函數(shù),這里冒充了sum;[]表示傳遞的參數(shù) } alert(sum1(10,10)); //打印20 alert(sum2(10,10)); //打印20
這兩方法最大的用處是:擴(kuò)充函數(shù)運(yùn)行的作用域。
window.color = "red"; //全局 var o = {color: "blue"}; //局部 function sayColor(){ alert(this.color); //這里this是動(dòng)態(tài)的 } sayColor(); //打印"red" //用call實(shí)現(xiàn)對(duì)象冒充 sayColor.call(this); //冒充window sayColor.call(window); //冒充window sayColor.call(o); //冒充sayColor,用call的好處:對(duì)象不需要與方法發(fā)生任何耦合關(guān)系(耦合:互相關(guān)聯(lián)的意思,擴(kuò)展和維護(hù)會(huì)發(fā)生連鎖反應(yīng))
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/94457.html
摘要:拷貝構(gòu)造函數(shù)示例構(gòu)造無參構(gòu)造函數(shù)總結(jié)容器和容器的構(gòu)造方式幾乎一致,靈活使用即可賦值操作功能描述給容器進(jìn)行賦值函數(shù)原型重載等號(hào)操作符將區(qū)間中的數(shù)據(jù)拷貝賦值給本身。清空容器的所有數(shù)據(jù)刪除區(qū)間的數(shù)據(jù),返回下一個(gè)數(shù)據(jù)的位置。 ...
JavaScript 中的數(shù)據(jù)類型 JavaScript 有 5 種簡(jiǎn)單數(shù)據(jù)類型:Undefined、Null、Boolean、Number、String 和 1 種復(fù)雜數(shù)據(jù)類型 Object 。 基本類型(值類型) Undefined Null Boolean Number String 復(fù)雜類型(引用類型) Object Array Date RegExp Function 基本包裝類...
摘要:一數(shù)據(jù)類型基本類型引用類型類型判斷返回結(jié)果未定義布爾值字符串?dāng)?shù)值對(duì)象或者函數(shù)拓展堆棧兩種數(shù)據(jù)結(jié)構(gòu)堆隊(duì)列優(yōu)先,先進(jìn)先出由操作系統(tǒng)自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。 一、數(shù)據(jù)類型 基本類型:`Null Boolean String Undefined Number(NB SUN)` 引用類型:`Array Function Object` 類型判斷:typeof 返回結(jié)果...
摘要:基本概念可以使用關(guān)鍵字創(chuàng)建。調(diào)用時(shí)傳入一個(gè)數(shù)組和一個(gè)函數(shù),內(nèi)部過程遍歷數(shù)組,并對(duì)數(shù)組中的每一項(xiàng)調(diào)用函數(shù),調(diào)用函數(shù)的時(shí)候會(huì)傳入兩個(gè)參數(shù),這個(gè)數(shù)組有項(xiàng),傳次,每次不一樣的不一樣的。會(huì)按照升序排列數(shù)組。 Array基本概念 Array可以使用new關(guān)鍵字創(chuàng)建 。var a = new Array(1,2,3,4); === var a = Array(1,2,3,4); === var a...
閱讀 2833·2019-08-30 15:55
閱讀 1915·2019-08-30 15:53
閱讀 2778·2019-08-29 18:38
閱讀 1020·2019-08-26 13:49
閱讀 589·2019-08-23 15:42
閱讀 3311·2019-08-22 16:33
閱讀 1079·2019-08-21 17:59
閱讀 1163·2019-08-21 17:11