Javascript 函數(shù)的四種調(diào)用模式
Javascript 函數(shù)的四種調(diào)用模式
1 函數(shù)模式
最普通的函數(shù)調(diào)用
// 聲明式函數(shù) function fn1 () { console.log(this); } // 函數(shù)表達(dá)式函數(shù) var fn2 = function() { console.log(this); }; // 調(diào)用 函數(shù)中this表示全局對(duì)象,在瀏覽器中就是指window fn1(); //window fn2(); //window
2 方法模式
函數(shù)依附于一個(gè)對(duì)象,是對(duì)象的一個(gè)屬性,我們?cè)僬{(diào)用這個(gè)函數(shù)。這種模式就是方法調(diào)用模式。
var obj = { name: "zhangSan", sayHi: function () { console.log(this); } }; obj.sayHi(); //obj對(duì)象
3 構(gòu)造器調(diào)用模式
即是構(gòu)造函數(shù)的調(diào)用,一般是通過new + 函數(shù)名( ),這種模式和以上的方法模式?jīng)]本質(zhì)的區(qū)別
function Person() {} var tom = new Person(); // 這就是構(gòu)造器函數(shù)的調(diào)用 // 構(gòu)造函數(shù)調(diào)用的詳細(xì)過程 // 1 會(huì)在內(nèi)部創(chuàng)建一個(gè)對(duì)象o // 2 給對(duì)象賦值(this), 然后執(zhí)行各種操作 // 3 返回這個(gè)對(duì)象o // 構(gòu)造函數(shù)的返回值: // // 有一個(gè)默認(rèn)的返回值,新創(chuàng)建的對(duì)象(實(shí)例); // 當(dāng)手動(dòng)添加返回值后(return語(yǔ)句): // 1. 返回值是基本數(shù)據(jù)類型-->真正的返回值還是那個(gè)新創(chuàng)建的對(duì)象(即實(shí)例) // 2. 返回值是復(fù)雜數(shù)據(jù)類型(對(duì)象)-->真正的返回值是這個(gè)對(duì)象
4 上下文模式
本質(zhì)--對(duì)象借用不屬于該對(duì)象的方法(函數(shù)),即我們自定義this的指向
這時(shí)候就需要call和apply這兩個(gè)方法
//Function.prototype.call () //Function.prototype.apply () //——>任何函數(shù)都可以調(diào)用call和apply方法 // 第一個(gè)參數(shù)控制this的指向,第二個(gè)參數(shù): 在使用 上下文調(diào)用的 時(shí)候, 原函數(shù)(方法)可能會(huì)帶有參數(shù), 那么這個(gè)參數(shù)在上下文調(diào)用中使用 第二個(gè)( 第 n 個(gè) )參數(shù)來表示
//偽數(shù)組 var o={ 0:10,1:20,length:2 }; //讓o對(duì)象借用數(shù)組的push方法來添加元素 //[].push.call(o,30,50,70) [].push.apply(o,[1,2,3]) console.log(o);//其中對(duì)象o中l(wèi)ength屬性的值也會(huì)改變的哦
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
手把手教你用JS實(shí)現(xiàn)回車評(píng)論功能
最近在寫一個(gè)問答功能,類似于評(píng)論,下面這篇文章主要給大家介紹了關(guān)于如何用JS實(shí)現(xiàn)回車評(píng)論功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06如何將一個(gè)String和多個(gè)String值進(jìn)行比較思路分析
開發(fā)中我們經(jīng)常需要將一個(gè)String和多個(gè)String值進(jìn)行比較。直覺反應(yīng)是使用||符號(hào)連接多個(gè)===完成,感興趣的朋友可以了解下哈2013-04-04JavaScript實(shí)現(xiàn)同步于本地時(shí)間的動(dòng)態(tài)時(shí)間顯示方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)同步于本地時(shí)間的動(dòng)態(tài)時(shí)間顯示方法,實(shí)例分析了javascript獲取本地時(shí)間及動(dòng)態(tài)顯示的技巧,并對(duì)實(shí)現(xiàn)代碼進(jìn)行了較為詳盡的分析說明,需要的朋友可以參考下2015-02-02javascript sudoku 數(shù)獨(dú)智力游戲生成代碼
javascript sudoku 數(shù)獨(dú)智力游戲生成代碼,喜歡的朋友可以參考下。2010-03-03uniapp地圖組件(map)使用與遇到的一些問題總結(jié)
uniapp是用vue.js開發(fā)所有前端應(yīng)用的框架,開發(fā)人員只需要編寫一套代碼就可以發(fā)布到安卓、iOS、H5和小程序、快應(yīng)用等平臺(tái),下面這篇文章主要給大家介紹了關(guān)于uniapp地圖組件(map)使用與遇到的一些問題,需要的朋友可以參考下2022-07-07JavaScript使用setTimeout實(shí)現(xiàn)延遲彈出警告框的方法
這篇文章主要介紹了JavaScript使用setTimeout實(shí)現(xiàn)延遲彈出警告框的方法,實(shí)例分析了javascript中setTimeout函數(shù)的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04