亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

JavaScript函數apply()和call()用法與異同分析

2024-05-06 16:45:37
字體:
來源:轉載
供稿:網友

本文實例分析了JavaScript函數apply()和call()用法與異同。分享給大家供大家參考,具體如下:

JavaScript的函數是對象,因此有屬性和方法。每個函數都包含兩個屬性:lengthprototype,每個函數都包含兩個非繼承而來的方法:apply()call()。

今天先來介紹一下前端面試中經常問到的apply()call()的區別吧!

這兩個方法的作用是在函數調用時改變函數的執行上下文,也就是函數內的this,apply()方法接收兩個參數,一個是在其中運行函數的作用域,另一個可以是arguments對象,也可以是參數數組。

call()方法與apply()方法的作用相同,它們的區別僅在于接收參數的方式不同,第一個參數不變,變化的是其余參數都直接傳遞給函數,也就是說,傳遞給函數的參數必須逐個列舉出來。

JavaScript的參數在內部就是用一個數組來表示的,從這個意義上來說,apply比call的使用率更高,不必關心具體有多少個參數被傳入函數,只要用apply一股腦傳進去即可。若明確知道函數接收幾個參數,且想一目了然地表達形參與實參的對應關系,可以使用call。

當使用call或apply時,若傳入的第一個參數是null,函數體內的this會指向默認的宿主對象,在瀏覽器中是window,但在嚴格模式下,函數體內的this還是為null。有時,使用call或apply的目的不在于指定this指向,而是另有用途,如借用其他對象的方法,則此時可以傳入null來替代某個具體的對象,如Math.max.apply(null, [1,5,2,4,3]]);

下面來舉個例子:

function sum(num1, num2) {  return num1 + num2;}function applyFunc1(num1, num2) {  return sum.apply(this, arguments);}function applyFunc2(num1, num2) {  return sum.apply(this, [num1, num2]);}function callFunc(num1, num2) {  return sum.call(this, num1, num2);}alert(applyFunc1(10, 20));//輸出:30alert(applyFunc2(10, 20));//輸出:30alert(callFunc(10, 20));//輸出:30

JS中的函數其實是對象,函數名是對Function對象的引用。

function add(a,b) {  alert(a+b);}function sub(a,b) {  alert(a-b);}add.call(sub,3,1); //輸出:30

如果你認為apply()call()的作用在于傳遞參數,那就錯了,它們真正強大的地方在于能夠擴充函數賴以運行的作用域。

call和apply的用途:

(1)改變this的指向。

call和apply最常見的用途是改變函數內部的this指向。如上述例子所示。

(2)借用其他對象的方法。

1)借用方法的第一種場景是借用其他對象的構造函數。

var Student = function(name) {  this.name = name;};var Teacher = function(name) {  Student.apply(this,arguments);};Teacher.prototype.getName = function() {  return this.name;};var teacher = new Teacher("Alice");console.log(teacher.getName()); // 輸出:Alice

2)借用方法的第二種場景是借用其他對象的方法。

當運行showColor.call(obj)時,函數的執行環境就進到了對象中。

window.color = "white";var obj = {color: "black"};function showColor() {  alert(this.color);}showColor();//輸出:"white"showColor.call(this);//輸出:"white"showColor.call(window);//輸出:"white"showColor.call(obj);//輸出:"black"

不需要把showColor()函數放到對象obj中,再通過obj來調用。

window.color = "white";var obj = {color : "black"};function showColor() {  alert(this.color);}showColor();//輸出:"white"obj.showColor = showColor;obj.showColor();//輸出:"black"

希望本文所述對大家JavaScript程序設計有所幫助。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品在线不卡| 国产精品久久久久久亚洲调教| 日韩av在线免费看| 91精品视频在线播放| 国产成人亚洲综合91精品| 欧美性生交大片免费| 色偷偷av一区二区三区| 亚洲护士老师的毛茸茸最新章节| 欧美日韩国产影院| 欧美成人激情视频免费观看| 欧美日韩亚洲一区二| 欧美性猛xxx| 日本成人黄色片| 欧美成人精品一区二区三区| 最近2019中文字幕在线高清| 91成人在线观看国产| 亚洲第一区第二区| 亚洲成人久久一区| 久久久久久97| 日本不卡高字幕在线2019| 欧美激情性做爰免费视频| 久久久国产成人精品| 亚洲精品第一页| 国产自产女人91一区在线观看| 正在播放欧美一区| 午夜精品久久久久久久白皮肤| 米奇精品一区二区三区在线观看| 亚洲第一精品久久忘忧草社区| 国产乱人伦真实精品视频| 琪琪亚洲精品午夜在线| 国产精品美女av| 国产黑人绿帽在线第一区| 性色av一区二区三区免费| 日韩欧美一区二区三区| 91久久综合亚洲鲁鲁五月天| 国产精品亚洲自拍| 色yeye香蕉凹凸一区二区av| 中文精品99久久国产香蕉| 久久99久久99精品免观看粉嫩| 欧美日韩免费观看中文| 97涩涩爰在线观看亚洲| 欧美猛男性生活免费| 亚洲美女av在线播放| 欧美日韩国产中文精品字幕自在自线| 久久久久一本一区二区青青蜜月| 亚洲精品美女在线| 中文字幕亚洲欧美日韩在线不卡| 久久影视电视剧免费网站| 国产精品18久久久久久首页狼| 一区二区三区日韩在线| 久久精品视频在线| 国产精品av免费在线观看| 亚洲摸下面视频| 欧美专区日韩视频| 亚洲人成亚洲人成在线观看| 国产精品久久久久久超碰| 精品久久香蕉国产线看观看gif| 国产成人综合一区二区三区| 久久精视频免费在线久久完整在线看| 中文字幕亚洲欧美| 亚洲欧美在线看| 97人人做人人爱| 中文日韩在线观看| 欧美成人全部免费| 精品国产999| 成人97在线观看视频| 亚洲精品久久久久中文字幕欢迎你| 久久综合伊人77777尤物| 久久久精品一区二区三区| 日韩少妇与小伙激情| 欧美天天综合色影久久精品| 国产成人精品亚洲精品| 欧美噜噜久久久xxx| 色婷婷**av毛片一区| 日韩女优在线播放| 久久精品夜夜夜夜夜久久| 97久久超碰福利国产精品…| 国产日本欧美在线观看| 亚洲国产三级网| 亚洲精品美女久久| 欧美剧在线观看| 欧美成人激情视频| 伊人久久久久久久久久久久久| 国产精品久久久久久久久久免费| 777国产偷窥盗摄精品视频| 国产亚洲欧美aaaa| 日韩视频永久免费观看| 国产女精品视频网站免费| 北条麻妃99精品青青久久| 97视频在线观看免费高清完整版在线观看| 日韩av中文字幕在线| 55夜色66夜色国产精品视频| 91精品国产高清久久久久久| 亚洲综合日韩中文字幕v在线| 琪琪第一精品导航| 精品久久久久久久久久久久久| 亚洲欧美国产精品| 性夜试看影院91社区| 色狠狠久久aa北条麻妃| 日韩精品视频在线播放| 久久91精品国产91久久久| 亚洲精品欧美一区二区三区| 96精品久久久久中文字幕| 日韩美女毛茸茸| 最近中文字幕2019免费| 中文字幕精品久久久久| 欧洲成人在线视频| 国产精品高潮呻吟久久av无限| 国产精品色视频| 午夜剧场成人观在线视频免费观看| 久久精品国产精品亚洲| 久久精品青青大伊人av| 亲子乱一区二区三区电影| 亚洲天堂网在线观看| 国产香蕉一区二区三区在线视频| 97在线视频免费看| 日韩中文字幕在线精品| 亚洲аv电影天堂网| 69久久夜色精品国产69| 亚洲精品国产电影| 国内偷自视频区视频综合| 一区二区三区高清国产| 日韩在线视频免费观看| 亚洲精品欧美极品| 日韩视频永久免费观看| 欧美一乱一性一交一视频| 一区三区二区视频| 日韩精品欧美国产精品忘忧草| 亚洲天堂男人天堂| 成人免费福利在线| 亚洲大胆美女视频| 国产成+人+综合+亚洲欧美丁香花| 国产精品久久久久久久电影| 91国产高清在线| 不卡中文字幕av| 欧美精品成人在线| 91系列在线观看| 国产精品丝袜一区二区三区| 欧美专区国产专区| 久色乳综合思思在线视频| 欧美激情精品久久久久久免费印度| 欧美最顶级丰满的aⅴ艳星| 欧美黑人xxxx| 亚洲精品资源美女情侣酒店| 欧美成人第一页| 九九热视频这里只有精品| 精品国产1区2区| 国产精品美女久久久免费| 秋霞成人午夜鲁丝一区二区三区| 日韩av成人在线观看| 国产精品精品一区二区三区午夜版| 亚洲欧美国产精品va在线观看| 精品国产户外野外| 国产精品十八以下禁看| 欧美整片在线观看| 亚洲级视频在线观看免费1级| 欧美一区第一页| 亚洲免费人成在线视频观看| www亚洲精品| 成人深夜直播免费观看| 国产精品爽黄69| 992tv成人免费影院| 5252色成人免费视频| 精品一区二区亚洲|