JS 函數(shù)的聲明和調(diào)用

函數(shù)的定義方式

1.自定義函數(shù)(命名函數(shù))

funtion fn(){};

2.函數(shù)表達(dá)式(匿名函數(shù))

var fun = funtion fn(){};

3.使用new Funtion('p1', 'p2', '函數(shù)體')

//函數(shù)體用字符串的形式寫入
var f = new Funtion('p1', 'p2', 'console.log(p1+p2)');
f(1, 2)

所有函數(shù)都是Funtion的一個(gè)實(shí)例(對(duì)象)
函數(shù)也是一種對(duì)象

函數(shù)的調(diào)用方式

1.普通函數(shù)

funtion fn(){ console.log('nihao')};
//調(diào)用
fn();
//或者
fn.call()

2.對(duì)象的方法

var x = {
  sayHi:funtion(){
    console.log('nihao');
  }
}
//調(diào)用
x.sayHi();

3.構(gòu)造函數(shù)

funtion Star(){};
//調(diào)用
new Star();

4.綁定事件函數(shù)

btn.onclick = function(){};
//點(diǎn)擊按鈕進(jìn)行調(diào)用

5.定時(shí)器函數(shù)

setInterval(funtion(){}, 1000);

6.立即執(zhí)行函數(shù)

(funtion(){
  console.log('nihao');
})();

this的指向問題

this的指向是當(dāng)我們調(diào)用函數(shù)的時(shí)候確定的窗慎,調(diào)用方式的不同決定了this的指向不同
?調(diào)用方式???????????this指向
普通函數(shù)調(diào)用 ????????window(普通函數(shù)是window調(diào)用的)
構(gòu)造函數(shù)調(diào)用 ????????實(shí)例對(duì)象,原型對(duì)象里面的方法也指向?qū)嵗龑?duì)象
對(duì)象方法調(diào)用 ????????該方法所屬對(duì)象
事件綁定方法 ????????綁定事件的對(duì)象
定時(shí)器函數(shù) ??????????window
立即執(zhí)行函數(shù) ????????window

改變函數(shù)內(nèi)部this的指向

JavaScript提供了一些函數(shù)方法幫我們更優(yōu)雅的處理函數(shù)內(nèi)部的this指向問題征讲,常用的有bind()层亿、call()、apply()三個(gè)方法

1.call方法
var t = {
  name:'tom'
}

funtion fn(){
  console.log(this);
}

fn.call()  //這時(shí)候fn函數(shù)中的this指向window

fn.call(t)  //這時(shí)fn函數(shù)中的this指向了t對(duì)象

這個(gè)特性可以用在繼承中

funtion Father(uname , age){
  this.uname = uname;
  this.age = age;
}
funtion Son(uname, age){
  //通過call函數(shù)將father中的this指向了son
  //son繼承了father的構(gòu)造函數(shù)拔莱,擁有了uname和age這兩個(gè)屬性
  Father.call(this, uname, age);
}

2.apply方法

apply()和call()作用一樣(參數(shù)不同)碗降,可以調(diào)用一個(gè)函數(shù),簡(jiǎn)單理解為調(diào)用函數(shù)的方式塘秦,但是它可以改變函數(shù)的this指向
fun.apply(thisArg, [argsArray]) (參數(shù)必須是數(shù)組(偽數(shù)組))
apply主要應(yīng)用在數(shù)組方面

//數(shù)組中沒有求最大最小值的方法讼渊,但是Math中有
//可以使用apply方法實(shí)現(xiàn)
var arr = [1, 2, 3, 4, 1];
var max = Math.max.apply(Math, arr);
var min = Math.max.apply(Math, arr);
console.log(max, min);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
3.bind方法

bing()方法不會(huì)調(diào)用函數(shù),但是可以改變函數(shù)內(nèi)部this的指向
fun.bind(thisArg, arg1, arg2, ...)
返回原函數(shù)改造后的一個(gè)拷貝

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尊剔,一起剝皮案震驚了整個(gè)濱河市爪幻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌须误,老刑警劉巖挨稿,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異京痢,居然都是意外死亡奶甘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門祭椰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來臭家,“玉大人,你說我怎么就攤上這事方淤《ち蓿” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵携茂,是天一觀的道長(zhǎng)你踩。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么姓蜂? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任按厘,我火速辦了婚禮,結(jié)果婚禮上钱慢,老公的妹妹穿的比我還像新娘逮京。我一直安慰自己,他們只是感情好束莫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布懒棉。 她就那樣靜靜地躺著,像睡著了一般览绿。 火紅的嫁衣襯著肌膚如雪策严。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天饿敲,我揣著相機(jī)與錄音妻导,去河邊找鬼。 笑死怀各,一個(gè)胖子當(dāng)著我的面吹牛倔韭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓢对,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼寿酌,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了硕蛹?” 一聲冷哼從身側(cè)響起醇疼,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎法焰,沒想到半個(gè)月后秧荆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡埃仪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年辰如,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贵试。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凯正,靈堂內(nèi)的尸體忽然破棺而出毙玻,到底是詐尸還是另有隱情,我是刑警寧澤廊散,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布桑滩,位于F島的核電站,受9級(jí)特大地震影響允睹,放射性物質(zhì)發(fā)生泄漏运准。R本人自食惡果不足惜幌氮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望胁澳。 院中可真熱鬧该互,春花似錦、人聲如沸韭畸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胰丁。三九已至随橘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锦庸,已是汗流浹背机蔗。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留甘萧,地道東北人萝嘁。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像幔嗦,于是被迫代替她去往敵國(guó)和親酿愧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 前言 面試官出很多考題邀泉,基本都會(huì)變著方式來考察this指向嬉挡,看候選人對(duì)JS基礎(chǔ)知識(shí)是否扎實(shí)。讀者可以先拉到底部看總...
    若川i閱讀 1,112評(píng)論 0 10
  • 函數(shù)和對(duì)象 1汇恤、函數(shù) 1.1 函數(shù)概述 函數(shù)對(duì)于任何一門語言來說都是核心的概念庞钢。通過函數(shù)可以封裝任意多條語句,而且...
    道無虛閱讀 4,578評(píng)論 0 5
  • 1.概念 在JavaScript中因谎,this 是指當(dāng)前函數(shù)中正在執(zhí)行的上下文環(huán)境基括,因?yàn)檫@門語言擁有四種不同的函數(shù)調(diào)...
    BluesCurry閱讀 1,135評(píng)論 0 2
  • 1. this之謎 在JavaScript中,this是當(dāng)前執(zhí)行函數(shù)的上下文财岔。因?yàn)镴avaScript有4種不同的...
    百里少龍閱讀 1,010評(píng)論 0 3
  • 在20歲左右的年紀(jì)风皿,我是這樣無力。 看到20的時(shí)候匠璧,我知道十幾歲的光陰已經(jīng)離我遠(yuǎn)去了桐款。而20到30的這段時(shí)間,總能...
    芣苢盈盈閱讀 296評(píng)論 0 0