日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js中call和apply的作用和用法

發布時間:2023/12/2 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js中call和apply的作用和用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

call和apply的用途是完全一樣的。改變函數中this的指向:

為什么要改變this的指向呢?這個有什么用?有哪些場景呢?

首先this的指向總是在變的,this的指向是由函數執行時所在的環境決定的,而不是函數聲明時的環境。

this都指向哪里?

1、在控制臺中輸入下面的代碼,此時可以看到this指向a這個對象。

var a={name:'a',getName:function(){return this.name;} } console.info(a.getName());//a

?

2、此時this指向了window

window.name= 'window'; var a={name:'a',getName:function(){return this.name;} }var b = a.getName; console.info(b());//window

結論:

如果函數是作為一個對象的屬性被調用的(用點的方式調用),此時函數內的this就指向這個對象。

如果是用變量或者名稱的方式直接調用的(不是使用點調用),則指向window。

?

場景:

this的改變:在寫代碼時經常會遇到這種情況,將函數作為回調函數使用時,this的指向變為了window,這個不是我們預期的結果

window.name='window'; var a={name:'a',getName:function(callback){return callback();//funcB使用非對象.的方式調用},funcB:function(){return this.name;} } console.info(a.getName(a.funcB));//window

這個時候就可以用call或者apply把this傳遞到callback中,callback中的this的指向就會被傳入的this所替代。

當然,也可以傳入其他對象覆蓋當前this的指向。

window.name='window'; var b={name:'b' }; var a={name:'a',getName:function(callback){return callback.call(b);//傳入b },funcB:function(){return this.name;} } console.info(a.getName(a.funcB));//b

也可以借用這個對象的方法。

window.name='window'; var b={name:'b', getBName:function(){return this.name;} }; var a={name:'a',getName:function(callback){return callback.call(b);//傳入b },funcB:function(){return this.getBName();} } console.info(a.getName(a.funcB));//b

使用這個功能可以實現類似繼承的效果

var F=function(name){this.name = name; } var S = function(){this.age=arguments[1];F.apply(this,arguments); } S.prototype.getNameAndAge=function(){console.info('名字是'+this.name+'年齡是'+this.age); }var s = new S('小紅','9歲'); s.getNameAndAge();//名字是小紅年齡是9歲

?

call和apply的區別:

傳入的參數形式不一樣

call(obj,參數1,參數2);

apply(obj,[參數1,參數2]);

轉載于:https://www.cnblogs.com/panyujun/p/9367911.html

總結

以上是生活随笔為你收集整理的js中call和apply的作用和用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。