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