亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

apply與call應用場景

還是沒搞懂什么時候需要用到apply與call方法

正在回答

3 回答

如果單純只是在一個函數中調用另一個函數是沒什么多大區別,apply?/?call?的最大作用就是改變上下文
比如說:
var?name?=?"張三";

//在全局里定義函數func1
function?getName(){
????return?this.name;
}

//在對象里定義函數func2
var?obj?=?{
????name:"李四",
????showName:function(){
????????return?getName.apply(this);????//在showName里調用getName,并將this從window改變為obj
????}
};

console.log(obj.showName());????//"李四"


2 回復 有任何疑惑可以回復我~
  1. 函數的調用需要用到對象。而上面說到的兩個都是函數;

  2. 其實你可以簡單地理解為這兩個方法就是為了改變函數的作用域。

0 回復 有任何疑惑可以回復我~

假設有函數fun1,在另一個函數fun2中想實現fun1的效果,就可以用fun2(data){return fun1.apply(fun2,arguments)}

0 回復 有任何疑惑可以回復我~
#1

llo蛋蛋oll 提問者

那這樣跟直接調用有什么區別呢?
2016-07-25 回復 有任何疑惑可以回復我~
#2

小白沖沖沖 回復 llo蛋蛋oll 提問者

這樣看沒什么區別,但有時需要綁定特殊的參數就有用處了
2016-09-08 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript深入淺出
  • 參與學習       281094    人
  • 解答問題       1054    個

由淺入深學習JS語言特性,且解析JS常見誤區,從入門到掌握

進入課程

apply與call應用場景

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號