js中Function引用類型常見(jiàn)有用的方法和屬性詳解
Function類型
函數(shù)由于是Function類型的一個(gè)實(shí)例,所以函數(shù)名就是一個(gè)指向函數(shù)對(duì)象的指針,不會(huì)與某個(gè)函數(shù)死死的連接在一起,這也導(dǎo)致了js中沒(méi)有真正的重載,但好處是,函數(shù)對(duì)象可以作為另一個(gè)函數(shù)的參數(shù)或是返回值;
訪問(wèn)一個(gè)函數(shù)對(duì)象的指針而不是執(zhí)行函數(shù)本身不能加括號(hào)
var func = new Function("x", "y", "return x + y");// 構(gòu)造函數(shù)來(lái)實(shí)例化一個(gè)Function類型, 但不推薦使用 function func(x, y){ return x + y; }// 函數(shù)聲明 js引擎會(huì)將所有的函數(shù)聲明提升到頂部 var func = function (x, y){ return x + y };// 函數(shù)表達(dá)式 變量的賦值, 變量func保存著 function(x, y){ return x + y} 這個(gè)對(duì)象
Function類型中,有兩個(gè)特殊的對(duì)象:arguments和this , 前者里面有傳入函數(shù)中所有的參數(shù),還有一個(gè)callee屬性,這是個(gè)指針指向擁有這個(gè)屬性的Function實(shí)例;而this這個(gè)指針指向執(zhí)行環(huán)境,也就是Global類型的一個(gè)實(shí)例. 在瀏覽器中是一個(gè)窗口.
function b(){ console.log(arguments.callee); }
Function類型的屬性和方法
length // Funciton實(shí)例期望接收形式參數(shù)的個(gè)數(shù) prototype // apply();// 非繼承的方法 // apply(Function實(shí)例運(yùn)行的作用域:this, Array實(shí)例或arguments) call();// 非繼承的方法 // call(Function實(shí)例運(yùn)行的作用域:this, arg1, arg2, ...) // bind( X );// 將Function的實(shí)例的this指向 對(duì)象 X
除此之外,Function類型中還有一個(gè)特殊的屬性:caller,這是個(gè)指針,在嚴(yán)格模式下不能對(duì)這個(gè)屬性賦值.
Function類型一個(gè)實(shí)例a調(diào)用了Function類型的另一個(gè)實(shí)例b, 那么實(shí)例b中的caller屬性就會(huì)指向?qū)嵗齛;
function a(){ b(); } function b(){ console.log(arguments.callee.caller); }
以上就是本次介紹的全部相關(guān)知識(shí)點(diǎn),感謝大家的學(xué)習(xí)和對(duì)腳本之家的支持。
相關(guān)文章
Javascript實(shí)現(xiàn)鼠標(biāo)框選操作 不是點(diǎn)擊選取
這篇文章主要介紹了Javascript實(shí)現(xiàn)鼠標(biāo)框選操作,不是點(diǎn)擊選取,利用鼠標(biāo)進(jìn)行框選,感興趣的小伙伴們可以參考一下2016-04-04uni-app使用swiper實(shí)現(xiàn)輪播圖的方法
做音樂(lè)播放器小程序時(shí),因?yàn)閟wiper的問(wèn)題耽誤不少時(shí)間,所以下面這篇文章主要給大家介紹了關(guān)于uni-app使用swiper實(shí)現(xiàn)輪播圖的相關(guān)資料,需要的朋友可以參考下2022-11-11javascript中setAttribute()函數(shù)使用方法及兼容性
這篇文章主要介紹了javascript中setAttribute()函數(shù)使用方法及兼容性的相關(guān)資料,需要的朋友可以參考下2015-07-07微信小程序云開(kāi)發(fā)之模擬后臺(tái)增刪改查
這篇文章主要為大家詳細(xì)介紹了微信小程序云開(kāi)發(fā)之模擬后臺(tái)增刪改查,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05使用mini-define實(shí)現(xiàn)前端代碼的模塊化管理
這篇文章主要介紹了使用mini-define實(shí)現(xiàn)前端代碼的模塊化管理,十分不錯(cuò)的一篇文章,這里推薦給有需要的小伙伴。2014-12-12JS基于clipBoard.js插件實(shí)現(xiàn)剪切、復(fù)制、粘貼
這篇文章主要介紹了JS實(shí)現(xiàn)剪切、復(fù)制、粘貼——clipBoard.js 的相關(guān)資料,需要的朋友可以參考下2016-05-05