成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

深入理解javascript函數(shù)

instein / 3097人閱讀

摘要:函數(shù)實(shí)際上是對(duì)象每個(gè)函數(shù)都是類(lèi)型的實(shí)例且與其他類(lèi)型一樣具有屬性和方法由于函數(shù)是對(duì)象故函數(shù)名即為指向函數(shù)的指針正是由于這一點(diǎn)函數(shù)沒(méi)有重載重復(fù)定義函數(shù)只會(huì)后者替換前者函數(shù)的定義函數(shù)的定義有三種函數(shù)聲明函數(shù)表達(dá)式使用構(gòu)造函數(shù)不推薦使用注函數(shù)聲明和

函數(shù)實(shí)際上是對(duì)象,每個(gè)函數(shù)都是Function類(lèi)型的實(shí)例,且與其他類(lèi)型一樣具有屬性和方法.由于函數(shù)是對(duì)象,故函數(shù)名即為指向函數(shù)的指針,正是由于這一點(diǎn),函數(shù)沒(méi)有重載,重復(fù)定義函數(shù)只會(huì)后者替換前者.

函數(shù)的定義

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

函數(shù)聲明

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

函數(shù)表達(dá)式

var sum=function(sum1,sum2){
 return sum1+sum2;
}

使用Function構(gòu)造函數(shù)(不推薦使用)

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

注:函數(shù)聲明和函數(shù)表達(dá)式的唯一區(qū)別是函數(shù)聲明會(huì)提前.意即函數(shù)調(diào)用在函數(shù)聲明之前可以正常運(yùn)行.

作為值的函數(shù)

前面提到函數(shù)是對(duì)象,所以函數(shù)也可以作為參數(shù)值或返回值.

//作為參數(shù)
function callSomeFunction(someFunction,someArgument){
reuturn someFunction(someArgument);
}

function add10(num){
return num+10;
}

var result=callSomeFunction(add10,10);
alert(result); //20

//作為返回值
function createCompareFunction(propertyName){
 return function(object1,object2){
 var value1 = object1[propertyName];
 var value2 = object2[propertyName];
   if(value1 < value2){
   return -1;
   }
   else if(value1 > value2){
   return 1;
   }
   else{
   return 0;
   }
 }
}
函數(shù)內(nèi)部屬性

在函數(shù)內(nèi)部有兩個(gè)特殊對(duì)象:arguments this
arguments是一個(gè)類(lèi)數(shù)組對(duì)象,包含傳入函數(shù)中的所有參數(shù)(這是其主要用途),除此之外,其還有一個(gè)callee的屬性,該屬性是一個(gè)指針,指向當(dāng)前函數(shù)對(duì)象.
this引用的是函數(shù)據(jù)以執(zhí)行的環(huán)境對(duì)象.在調(diào)用函數(shù)之前,this的值是不確定的,當(dāng)在全局對(duì)象中調(diào)用函數(shù)時(shí),this引用的是全局對(duì)象window,當(dāng)把函數(shù)賦值給某對(duì)象時(shí),this指的是此對(duì)象.

window.color = "red";
function sayColor(){
alert(color);
}
sayColor(); //red

var o={color:"blue"};
o.sayColor = sayColor;
o.sayColor();//blue
函數(shù)的屬性和方法

屬性
length:函數(shù)希望接收的命名參數(shù)的個(gè)數(shù).
prototype:這是一個(gè)非常耐人尋味的屬性,它保存著函數(shù)的實(shí)例方法,意即到通過(guò)函數(shù)實(shí)例化得到的對(duì)象可以訪(fǎng)問(wèn)prototype中的方法.此屬性在自定義引用類(lèi)型和實(shí)現(xiàn)繼承很有用處.

方法
apply call這兩個(gè)方法是函數(shù)的非繼承方法.用途都是設(shè)置函數(shù)體內(nèi)this對(duì)象的值.

apply接收兩個(gè)參數(shù),第一個(gè)是運(yùn)行函數(shù)的作用域,通俗的說(shuō)就是將這個(gè)參數(shù)作為this指向的值.第二個(gè)參數(shù)是數(shù)組作為執(zhí)行函數(shù)的參數(shù).

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

call接收的第一個(gè)參數(shù)也是運(yùn)行函數(shù)的作用域,后面的參數(shù)也是傳遞給執(zhí)行函數(shù)的參數(shù),與apply不同的是,后面的參數(shù)并非數(shù)組,而是逐個(gè)列舉出來(lái)的.

function sum(sum1,sum2){
return sum1+sum2;
}
function callSum(num1,num2){
return sum.call(this,num1,num2);
}
alert(callSum(10,10)); //20
構(gòu)造函數(shù)

ECMAScript中的構(gòu)造函數(shù)可以創(chuàng)建特定類(lèi)型的對(duì)象.內(nèi)置的構(gòu)造函數(shù)(例如Array Object)會(huì)自動(dòng)出現(xiàn)在執(zhí)行環(huán)境中.構(gòu)造函數(shù)的首字母應(yīng)該以大寫(xiě)字母開(kāi)頭,從而區(qū)分非構(gòu)造函數(shù).
要?jiǎng)?chuàng)建新的實(shí)例,必須使用new操作符,穿件新的實(shí)例會(huì)經(jīng)歷以下四個(gè)步驟:

創(chuàng)建一個(gè)新對(duì)象

將構(gòu)造函數(shù)的作用域賦值給新對(duì)象(因此this指向這個(gè)新對(duì)象);

指向構(gòu)造函數(shù)中的代碼.

返回新對(duì)象

function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.sayName = function(){
alert(this.name);
};
}

var person=new Person("Mr pu",24,"web developer");

構(gòu)造函數(shù)與普通函數(shù)的區(qū)別在于構(gòu)造函數(shù)在實(shí)例化時(shí)加了new關(guān)鍵字.其它地方完全一樣.

重要提示 在通過(guò)構(gòu)造函數(shù)實(shí)例化對(duì)象時(shí),請(qǐng)勿把方法放在構(gòu)造函數(shù)中,因?yàn)槊總€(gè)函數(shù)(在這里指方法方法)都是對(duì)象,每次實(shí)例化一個(gè)對(duì)象時(shí)這個(gè)對(duì)象中會(huì)保存每一構(gòu)造函數(shù)中的方法,這是很影響性能的.解決辦法是把這些方法放在prototype屬性中.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/85994.html

相關(guān)文章

  • 深入理解JavaScript

    摘要:深入之繼承的多種方式和優(yōu)缺點(diǎn)深入系列第十五篇,講解各種繼承方式和優(yōu)缺點(diǎn)。對(duì)于解釋型語(yǔ)言例如來(lái)說(shuō),通過(guò)詞法分析語(yǔ)法分析語(yǔ)法樹(shù),就可以開(kāi)始解釋執(zhí)行了。 JavaScript深入之繼承的多種方式和優(yōu)缺點(diǎn) JavaScript深入系列第十五篇,講解JavaScript各種繼承方式和優(yōu)缺點(diǎn)。 寫(xiě)在前面 本文講解JavaScript各種繼承方式和優(yōu)缺點(diǎn)。 但是注意: 這篇文章更像是筆記,哎,再讓我...

    myeveryheart 評(píng)論0 收藏0
  • 深入理解javascript中的立即執(zhí)行函數(shù)(function(){…})()

    摘要:要理解立即執(zhí)行函數(shù),需要先理解一些函數(shù)的基本概念。函數(shù)表達(dá)式使用關(guān)鍵字聲明一個(gè)函數(shù),但未給函數(shù)命名,最后將匿名函數(shù)賦予一個(gè)變量,叫函數(shù)表達(dá)式,這是最常見(jiàn)的函數(shù)表達(dá)式語(yǔ)法形式。 javascript和其他編程語(yǔ)言相比比較隨意,所以javascript代碼中充滿(mǎn)各種奇葩的寫(xiě)法,有時(shí)霧里看花,當(dāng)然,能理解各型各色的寫(xiě)法也是對(duì)javascript語(yǔ)言特性更進(jìn)一步的深入理解。 ( functio...

    melody_lql 評(píng)論0 收藏0
  • 【進(jìn)階2-2期】JavaScript深入之從作用域鏈理解閉包

    摘要:使用上一篇文章的例子來(lái)說(shuō)明下自由變量進(jìn)階期深入淺出圖解作用域鏈和閉包訪(fǎng)問(wèn)外部的今天是今天是其中既不是參數(shù),也不是局部變量,所以是自由變量。 (關(guān)注福利,關(guān)注本公眾號(hào)回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實(shí)戰(zhàn)、面試指導(dǎo)) 本周正式開(kāi)始前端進(jìn)階的第二期,本周的主題是作用域閉包,今天是第7天。 本計(jì)劃一共28期,每期重點(diǎn)攻克一個(gè)面試重難點(diǎn),如果你還不了解本進(jìn)階計(jì)...

    simpleapples 評(píng)論0 收藏0
  • ES6-7

    摘要:的翻譯文檔由的維護(hù)很多人說(shuō),阮老師已經(jīng)有一本關(guān)于的書(shū)了入門(mén),覺(jué)得看看這本書(shū)就足夠了。前端的異步解決方案之和異步編程模式在前端開(kāi)發(fā)過(guò)程中,顯得越來(lái)越重要。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(shū)(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會(huì)promise...... 本書(shū)的目的是以目前還在制定中的ECMASc...

    mudiyouyou 評(píng)論0 收藏0
  • JavaScript深入淺出

    摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類(lèi)繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對(duì)方法,包括,,。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸?,因此文中只看懂?8 成左右,希望能夠給大家?guī)?lái)幫助....(據(jù)說(shuō)是阿里的前端妹子寫(xiě)的) this 的值到底...

    blair 評(píng)論0 收藏0
  • Javascript深入理解this作用域問(wèn)題以及new/let/var/const對(duì)this作

    摘要:理解作用域高級(jí)程序設(shè)計(jì)中有說(shuō)到對(duì)象是在運(yùn)行時(shí)基于函數(shù)的執(zhí)行環(huán)境綁定的在全局函數(shù)中,等于,而當(dāng)函數(shù)被作為某個(gè)對(duì)象調(diào)用時(shí),等于那個(gè)對(duì)象。指向與匿名函數(shù)沒(méi)有關(guān)系如果函數(shù)獨(dú)立調(diào)用,那么該函數(shù)內(nèi)部的,則指向。 理解this作用域 《javascript高級(jí)程序設(shè)計(jì)》中有說(shuō)到: this對(duì)象是在運(yùn)行時(shí)基于函數(shù)的執(zhí)行環(huán)境綁定的:在全局函數(shù)中,this等于window,而當(dāng)函數(shù)被作為某個(gè)對(duì)象調(diào)用時(shí),t...

    snowLu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

instein

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<