激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務(wù)器之家 - 編程語(yǔ)言 - JavaScript - JavaScript中call()、apply()、bind()方法特點(diǎn)講解

JavaScript中call()、apply()、bind()方法特點(diǎn)講解

2021-06-19 00:20今日頭條前端大偉 JavaScript

在javascript中,每個(gè)對(duì)象中都會(huì)有一個(gè)apply()方法和一個(gè)call()方法,兩者作用是都可以替代另一個(gè)對(duì)象調(diào)用一個(gè)方法,將一個(gè)函數(shù)的上下文改變成由thisObj指向的新對(duì)象。

JavaScript中call()、apply()、bind()方法特點(diǎn)講解

在javascript中,每個(gè)對(duì)象中都會(huì)有一個(gè)apply()方法和一個(gè)call()方法

兩者的相同之處:

兩者作用是都可以替代另一個(gè)對(duì)象調(diào)用一個(gè)方法,將一個(gè)函數(shù)的上下文改變成由thisObj指向的新對(duì)象

當(dāng)我們通過(guò)call和apply來(lái)this的指向時(shí),不傳任何參數(shù),則默認(rèn)為將this指向修改為windows,有參數(shù)時(shí)會(huì)指向第一個(gè)參數(shù)

兩者不同之處:

apply最多只能有兩個(gè)參數(shù)——新this對(duì)象和一個(gè)數(shù)組argArray。如果給該方法傳遞多個(gè)參數(shù),則把參數(shù)都寫(xiě)進(jìn)這個(gè)數(shù)組里面,當(dāng)然,即使只有一個(gè)參數(shù),也要寫(xiě)進(jìn)數(shù)組里。如果argArray不是一個(gè)有效的數(shù)組或arguments對(duì)象,那么將導(dǎo)致一個(gè)TypeError。如果沒(méi)有提供argArray和thisObj任何一個(gè)參數(shù),那么Global對(duì)象將被用作thisObj,并且無(wú)法被傳遞任何參數(shù)。

call它可以接受多個(gè)參數(shù),第一個(gè)參數(shù)與apply一樣,后面則是一串參數(shù)列表。這個(gè)方法主要用在js對(duì)象各方法相互調(diào)用的時(shí)候,使當(dāng)前this實(shí)例指針保持一致,或者在特殊情況下需要改變this指針。如果沒(méi)有提供thisObj參數(shù),那么 Global 對(duì)象被用作thisObj。

案例:

  1. // apply()方法 
  2. obj.apply(thisObj,['arg1''arg2']) 
  3.  
  4. // call()方法 
  5. obj.call(thisObj,'arg1','arg2','arg3'

以上thisObj繼承了obj的屬性和方法

  1. // 例1: 
  2. function add(j, k){ 
  3.   return j+k; 
  4.  
  5. function sub(j, k){ 
  6.   return j-k; 
  7.  
  8. // sub繼承了add方法 
  9. console.log(add(5,3)); //8 
  10. console.log(add.call(sub, 5, 3)); //8 
  11. console.log(add.apply(sub, [5, 3])); //8 
  12.  
  13. // add繼承了sub方法 
  14. console.log(sub(5, 3)); //2 
  15. console.log(sub.call(add, 5, 3)); //2 
  16. console.log(sub.apply(add, [5, 3])); //2 
  17.  
  18. // 例2: 
  19. var person = function(){ 
  20.   this.name = "Tom"
  21.   this.age = 22; 
  22. var other = {}; 
  23.  
  24. console.log(other); // {} 
  25. // other繼承了person的屬性 
  26. person.call(other); 
  27. console.log(other); // {name"Tom", age: 22} 

bind綁定:

call()方法和apply()方法在綁定后會(huì)立即執(zhí)行,而bind則不會(huì)立即執(zhí)行

  1. add.bind(sub, 5, 3); // 返回的是add方法函數(shù)本體 
  2. add.bind(sub, 5, 3)(); // 8 

原文鏈接:https://www.toutiao.com/i6974295878005686788/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久久北条麻妃免费看 | 亚洲国产综合在线观看 | 欧美一区在线观看视频 | 爱高潮www亚洲精品 国产精品一区自拍 | 亚洲国产超高清a毛毛片 | 欧美一级做一a做片性视频 日韩黄色片免费看 | 色爱99| 精品国产观看 | 国产欧美亚洲精品a | 91色琪琪电影亚洲精品久久 | 色屁屁xxxxⅹ在线视频 | 亚洲精品com | 久久精品无码一区二区三区 | 关键词 | 亚洲一区二区三区精品在线观看 | 视频一区二区三区在线播放 | 国产精品成人一区二区三区吃奶 | 黑人操穴 | 亚洲视频观看 | 欧美女同hd| 久草在线最新免费 | 欧美zoofilia杂交videos | 日韩欧美激情视频 | 日韩视频一二区 | 视频一区二区中文字幕 | 欧美色爱综合 | 亚洲一区二区免费视频 | 久草在线资源福利站 | 欧美成人综合视频 | 国产成人av在线 | 日本黄色免费播放 | 奇米影视奇米色777欧美 | 欧美亚洲免费 | 91精品国产福利尤物免费 | 羞羞视频免费网站男男 | 美国一级免费视频 | 精品69人人人人 | 欧美日本亚洲视频 | 激情五月少妇a | 国产成人免费精品 | 欧美顶级毛片在线播放小说 |