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