国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

Javascript調(diào)用函數(shù)方法的幾種方式介紹_javascript技巧

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 21:35:52
文檔

Javascript調(diào)用函數(shù)方法的幾種方式介紹_javascript技巧

Javascript調(diào)用函數(shù)方法的幾種方式介紹_javascript技巧:javascript語法靈活,同一個(gè)功能有五六種實(shí)現(xiàn)方式并不罕見,然后再加上有些反人類的原型繼承和異步特性,就更讓人一頭霧水了。我經(jīng)常搞不清楚call,apply之間的區(qū)別,今天就記錄一下,以免再忘了。 在javascript中,方法可以通過以下幾種方式執(zhí)行: 1.fu
推薦度:
導(dǎo)讀Javascript調(diào)用函數(shù)方法的幾種方式介紹_javascript技巧:javascript語法靈活,同一個(gè)功能有五六種實(shí)現(xiàn)方式并不罕見,然后再加上有些反人類的原型繼承和異步特性,就更讓人一頭霧水了。我經(jīng)常搞不清楚call,apply之間的區(qū)別,今天就記錄一下,以免再忘了。 在javascript中,方法可以通過以下幾種方式執(zhí)行: 1.fu

javascript語法靈活,同一個(gè)功能有五六種實(shí)現(xiàn)方式并不罕見,然后再加上有些反人類的原型繼承和異步特性,就更讓人一頭霧水了。我經(jīng)常搞不清楚call,apply之間的區(qū)別,今天就記錄一下,以免再忘了。

在javascript中,方法可以通過以下幾種方式執(zhí)行:

1.func(),這是最直接最常見的調(diào)用方式,也符合一般人的思維邏輯,但是在某些情況下有一些不足,下面會(huì)解釋。

2.(function(arg){})(window),匿名方法調(diào)用,在構(gòu)造命名空間時(shí)比較有用,后面的括號(hào)中的參數(shù)與匿名方法中的入?yún)⒁灰粚?duì)應(yīng)。

3.func.bind(sth)(),mozilla手冊(cè)中提到bind是在ECMA-262 5th Edition中新增的一個(gè)特性,這里單獨(dú)列出來作為一種調(diào)用方式是因?yàn)樗鼜浹a(bǔ)了直接調(diào)用中不能綁定作用域的缺陷。

4.func.call(),這是第二種調(diào)用方式,每個(gè)方法的原型中都定義了call方法,用來執(zhí)行當(dāng)前方法。

5.func.apply(),call的雙胞胎兄弟。

func()

這是最常見的調(diào)用方式,在任何語言中隨處可見。func(x, y)可以傳入不同的參數(shù)。在某些語言,例如php,java中,這種調(diào)用足以解決一切問題。但是javascript是一門函數(shù)式語言,閉包的概念和一個(gè)奇怪的關(guān)鍵詞this決定了這種調(diào)用方式的不足。this應(yīng)該可以解釋為當(dāng)前代碼段的作用域,會(huì)隨著代碼執(zhí)行到不同的片段而改變,但是某些情況下我們不希望這個(gè)this被改變,例如綁定在某些dom上的事件,我們肯定不希望他們被調(diào)用的時(shí)候this被轉(zhuǎn)移到了window對(duì)象上,但有時(shí)候確實(shí)如此,再比如下面的代碼。
代碼如下:
var a ={};
var func = function(x) {
console.log(this);
};
a.onclick = function() {
var x = 100;
func(x);
};
a.onclick();

可以把a(bǔ)想象成頁面中的一個(gè)鏈接,由于我們只是想將定義好的方法綁定到onclick事件上,而不是立刻調(diào)用它,而且這個(gè)方法擁有一個(gè)參數(shù),所以我們需要用一個(gè)匿名方法將他包起來傳遞給a的onclick事件。這樣就有了一個(gè)問題,func中的this變成了全局對(duì)象window,顯然我們并不希望如此。這個(gè)時(shí)候,使用func()這種直接調(diào)用的方式就不行了,于是我們需要將func外的this綁定到func方法上。于是就有了bind,call,apply方法。

bind

bind的目的非常簡單,返回一個(gè)綁定了this對(duì)象的相同方法。上面的代碼修改一行就可以實(shí)現(xiàn)綁定this在a對(duì)象上目的。
代碼如下:
var a ={};
var func = function(x) {
console.log(this);
};
a.onclick = function() {
var x = 100;
func.bind(this)(x); // bind here
};
a.onclick();

這樣,onclick事件的this就不會(huì)像無頭蒼蠅一樣到處亂跑啦。

call & apply

call和apply要放在一起講,因?yàn)樗麄儗?shí)在太像了。他們都支持多參數(shù),而且第一個(gè)參數(shù)都是即將綁定的this對(duì)象,第二個(gè)參數(shù)則是他們的區(qū)別所在,call使用獨(dú)立的參數(shù)作為調(diào)用方法的入?yún)ⅲ琣pply使用一個(gè)數(shù)組作為入?yún)ⅰS械臅r(shí)候我們并不是不想改變this對(duì)象,而是想人為的將他綁定到別的對(duì)象上,這個(gè)時(shí)候call和apply是很好用的。(并不是說不能用bind,不過貌似bind出現(xiàn)的比較晚,可能瀏覽器兼容性不好)。舉個(gè)栗子:
代碼如下:
a = {
func: function() {
this.x += 1;
},
x: 0
};
b = {
a: a,
x: 20
};
for(var i = 0; i < 10; i++){
b.a.func();
}
console.log(a.x);
console.log(b.x);

上面的a和b對(duì)象中都有x,我們希望func能針對(duì)性的修改對(duì)應(yīng)的x,但是直接調(diào)用只可能修改func作用域中的x,也就是a.x。修改一下代碼,就可以實(shí)現(xiàn)修改b.x目的
代碼如下:
a = {
func: function() {
this.x += 1;
},
x: 0
};
b = {
a: a,
x: 20
};
for(var i = 0; i < 10; i++){
b.a.func.call(b); // bind this to b
}
console.log(a.x);
console.log(b.x);

這個(gè)栗子舉得不好,有點(diǎn)牽強(qiáng)附會(huì),而且這是一種很容易讓人迷惑的代碼風(fēng)格,有適用的場(chǎng)景,但不是處處都可用。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Javascript調(diào)用函數(shù)方法的幾種方式介紹_javascript技巧

Javascript調(diào)用函數(shù)方法的幾種方式介紹_javascript技巧:javascript語法靈活,同一個(gè)功能有五六種實(shí)現(xiàn)方式并不罕見,然后再加上有些反人類的原型繼承和異步特性,就更讓人一頭霧水了。我經(jīng)常搞不清楚call,apply之間的區(qū)別,今天就記錄一下,以免再忘了。 在javascript中,方法可以通過以下幾種方式執(zhí)行: 1.fu
推薦度:
標(biāo)簽: 方法 使用 方式
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 自拍偷拍欧美亚洲 | 亚洲国产成人精品一区二区三区 | 欧美日韩国产亚洲一区二区三区 | 任你躁欧美一级在线精品免费 | 欧美日韩免费一区二区三区 | 91精品国产色综合久久不卡蜜 | 国产视频高清在线观看 | 日韩中文字幕第一页 | 欧美日韩资源 | 欧美日韩国产高清视频 | 日韩一区二区视频 | 亚洲色图88| 国产一区 在线播放 | 亚洲国产成人久久综合碰 | 国产一区二区在线免费观看 | 国产精品伦视频观看免费 | 精品国产乱码一区二区三区麻豆 | 视频一区久久 | 国产视频播放 | 久久精品国内一区二区三区 | 一本大道香蕉视频在线观看 | 欧美天天干 | 日韩精品网址 | 一区二区三区在线 | 午夜大片在线观看 | 欧美日韩国产三级 | 成人亚洲国产综合精品91 | 亚洲精品国产成人99久久 | 亚洲va欧美ⅴa国产va影院 | 亚洲图片欧美在线 | 午夜精品一区二区三区在线观看 | 国产欧美在线观看视频 | 99久久综合国产精品免费 | 国产精品成人久久久久久久 | 国产成人精品一区二区免费视频 | 日本另类αv欧美另类aⅴ | 国产区在线免费观看 | 国产女同一区二区三区五区 | 亚洲欧美日韩激情在线观看 | 成人国内精品久久久久影院 | 欧美日韩中文国产 |