真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

引用類型-Function類型

    

公司主營業(yè)務:成都網(wǎng)站設計、網(wǎng)站建設、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出三亞免費做網(wǎng)站回饋大家。

Function類型


 

定義函數(shù)的三種方式:

1、函數(shù)聲明

function sum(num1,num2){            return num1 +num2;
        }

2、函數(shù)表達式

var sum = function(num1,num2){            return num1 + num2;
        }

3、Function構造函數(shù)(不推薦)
//最后一個參數(shù)始終都被認作函數(shù)體,會導致解析兩次代碼

var sum =new Function("num1","num2","return num1 + num2");

注意:函數(shù)名僅僅是指向函數(shù)的指針,因此函數(shù)名與其他包含對象的指針沒有設么區(qū)別

 

引用類型-Function類型

function sum(num1,num2){            return num1 + num2;
        }
alert(sum(10,10)); //20var another = sum;
alert(another(10,10)); //20sum = null;
alert(another(10,10)); //20sum和another都指向同一個函數(shù),所以講sum設置為null并不影響another

引用類型-Function類型

 

注意:使用不帶圓括號的函數(shù)名是訪問函數(shù)指針,并不是調用函數(shù)

 

沒有重載


 

將函數(shù)名理解為指針有利于理解為什么沒有重載

 

引用類型-Function類型

function addSomeNumber(num){            return num + 100;
        }function addSomeNumber(num){            return num + 200;
        }
alert(addSomeNumber(100)); //300

引用類型-Function類型

 

第二個函數(shù)將addSomeNumber指向新的函數(shù)

 

函數(shù)聲明與函數(shù)表達式

 


 

 

解析器在向執(zhí)行環(huán)境中加載數(shù)據(jù)時,對函數(shù)聲明和函數(shù)表達式不是一時同仁。解析器會率先讀取函數(shù)聲明,并使其在執(zhí)新行任何代碼之前可用。對于函數(shù)表達式,則必須等到執(zhí)行到它所在的代碼行,才會真正被解析。

alert(sum(10.10)); //20function sum(num1,num2){            return num1 +num2;
        }

在代碼執(zhí)行環(huán)境之前,解析器會通過一個名為函數(shù)聲明提升的過程,讀取并將函數(shù)聲明添加到執(zhí)行環(huán)境當中。對代碼求值時,JavaScript引擎在第一遍會聲明函數(shù)并將它們放到源代碼樹的頂部

alert(sum(10,10));  sum = (num1,num2){             num1 + num2;
        }

 

作為值的函數(shù)

 


 

可以像傳遞參數(shù)一樣把一個函數(shù)傳遞給另一個函數(shù),也可以將一個函數(shù)作為另一個函數(shù)的結果返回。

 

引用類型-Function類型

function callSomeFunction(someFunction,someArugment){            return someFunction(someArugment);
        }function add10(num){            return num + 10;
        }var result = callSomeFunction(add10,10);
alert(result);//20

引用類型-Function類型

 

可以從一個函數(shù)中返回另一個函數(shù)

引用類型-Function類型

function createComparisonFunction(propertyName){            return function(object1,object2){                var values1 = object1[propertyName];                var values2 = object2[propertyName];                if(values1values2)                    return 1;                else
                    return 0;
            };
        }var data = [{name:"qunzhu",age:21},{name:"huishuai",age:22},{name:"kuolang",age:23}];
data.sort(createComparisonFunction(name));
alert(data[1].name); //huishuai

引用類型-Function類型

 

函數(shù)內部屬性

 


 

 

在函數(shù)內部,有兩個特殊的對象:arguments和this。
arguments他是一個類數(shù)組對象,包含著傳入函數(shù)中所有的參數(shù),他有一個callee屬性,該屬性是一個指針,指向擁有這個arguments對象的函數(shù)。

function factorial(num){            if(num<=1)                return 1;            else
                return num * factorial(num-1);
        }

函數(shù)有一個問題,函數(shù)的執(zhí)行與函數(shù)名耦合在了一起
改進:

引用類型-Function類型

function factorial(num){            if(num<=1)                return 1;            else
                return num * arguments.callee(num-1);
        }var trueFactorial = factorial;
factorial = function(){            return 0;
        }
alert(trueFactorial(5)); //120alert(factorial(5)); //0

引用類型-Function類型

this引用的是函數(shù)數(shù)據(jù)以執(zhí)行的環(huán)境對象或者也可以說是this值(當在網(wǎng)頁的全局作用域中調用函數(shù)時this對象引用的是window)

引用類型-Function類型

window.color = "red";var o = {color:"blue"};function sayColor(){
            alert(this.color);
        }
sayColor(); //redo.sayColor = sayColor;
o.sayColor(); //blue

引用類型-Function類型

ECMAScript5也規(guī)范化了另一個函數(shù)對象的屬性:caller,這個屬性保存著調用當前函數(shù)的函數(shù)的引用,如果在全局作用域中調用當前函數(shù),則返回null。

引用類型-Function類型

function outer(){
            inner();
        }function inner(){
            alert(inner.caller);
        }
outer();//會彈出警告框,顯示outer()的源代碼

引用類型-Function類型

 

函數(shù)屬性和方法

 


 

 

每個函數(shù)都有兩個屬性:length和prototype
length屬性表示函數(shù)希望接受的命名參數(shù)

function sum(num1,num2){            return num1 + num2;
        }
alert(sum.length); //2

對于ECMAScript中的引用類型而言,prototype是保存他們所有實例方法的真正所在,prototype的屬性是不可枚舉的,因此使用for-in無法發(fā)現(xiàn)


每個函數(shù)都包含兩個非繼承的方法:apply()和call()。這兩個方法的用途都是在指定的作用域中調用函數(shù),實際上等于設置函數(shù)體內的this對象的值

引用類型-Function類型

function sum(num1,num2){            return num1 + num2;
        }function callSum1(num1,num2){            return sum.apply(this,arguments);
        }function callSum2(num1,num2){            return sum.apply(this,[num1,num2]);
        }
alert(callSum1(10,10)); //20alert(callSum2(10,10)); //20

引用類型-Function類型

call()方法與apply()方法的作用相同,他們的區(qū)別在于接受參數(shù)的方式不同,call()方法,第一個參數(shù)時this值沒有變化,變化的是其余參數(shù)都直接傳遞給函數(shù)。換句話說,在使用call()方法時,傳遞給函數(shù)的參數(shù)必須逐個列舉出來

引用類型-Function類型

function sum(num1,num2){            return num1 + num2;
        }function callSum(num1,num2){             return sum.call(this,num1,num2);
         }
 alert(callSum(10,10)); //20

引用類型-Function類型

 其實call()和apply()真正強大的地方在于能夠擴充函數(shù)賴以運行的作用域

引用類型-Function類型

 window.color = "red"; var o = {color:"blue"}; function sayColor(){
             alert(this.color);
         }
 sayColor(); //red
 sayColor.call(this); //red
 sayColor.call(window); //red
 sayColor.call(o); //blue

引用類型-Function類型

 ECMAScript5還定義了一個方法bind()。這個方法會創(chuàng)建一個函數(shù)的實例,起this值會綁定到傳給bind()函數(shù)的值

引用類型-Function類型

 window.color = "red";var o = {color:"blue"};function sayColor(){
            alert(this.color);
        }var objectSayColor = sayColor.bind(o);
objectSayColor(); //blue

引用類型-Function類型

每個函數(shù)繼承的toLocaleString()和toString()方法會始終返回函數(shù)的代碼。

 


名稱欄目:引用類型-Function類型
轉載注明:http://weahome.cn/article/jspdod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部