JavaScript:new 一個函數(shù)和直接調(diào)用函數(shù)的區(qū)別分析
更新時(shí)間:2013年07月10日 11:40:28 作者:
或許許多人對此不以為然,在函數(shù)前加 new 關(guān)鍵字,不就是實(shí)例化一個對象嗎?但事情顯然沒那么簡單
復(fù)制代碼 代碼如下:
function Test() {
this.name = 'Test';
return function() { return true; }
}
var test = new Test(); // 這里的 test 是什么?
是一個 Test 對象嗎?錯!這里 test 是一個函數(shù)——Test 中返回的 function() { return true; }。這時(shí),new Test() 等效于 Test(),注意,是等效于,不是等于,如果使用new Test() == Test() 判定兩者是否相等,則會返回 false,因?yàn)?Javascript 對于 Object 和 Function 的比較是基于引用的。
為了更清晰的分辨在上述情形下兩者間的區(qū)別,請繼續(xù)看以下代碼:
復(fù)制代碼 代碼如下:
function Test() {
this.name = 'Test';
return 'Test';
}
var fnT = Test();
var newT = new Test();
顯然,fnT 是字符串 Test,那 newT 呢?呵呵,是不是被第一個樣例迷惑了?其實(shí),此時(shí) newT 是一個 Test 對象——有一個名為 name 的屬性,其值為字符串 Test。
通過上面兩段代碼,我們可以得出一個猜測,如果函數(shù)返回值為常規(guī)意義上的值類型(Number、String、Boolean)時(shí),new 函數(shù)將會返回一個該函數(shù)的實(shí)例對象,而如果函數(shù)返回一個引用類型(Object、Array、Function),則 new 函數(shù)與直接調(diào)用函數(shù)產(chǎn)生的結(jié)果等同。通過在 Test 函數(shù)中返回不同類型的值進(jìn)行測試,可以證實(shí)這一點(diǎn)?! ?BR> 分清這一點(diǎn),其實(shí)還是蠻重要的,至少在看一些面向?qū)ο蟮目蚣茴悗齑a時(shí),會少一些疑惑。
您可能感興趣的文章:
- JavaScript函數(shù)的4種調(diào)用方法實(shí)例分析
- JavaScript 函數(shù)的定義-調(diào)用、注意事項(xiàng)
- 深入學(xué)習(xí) JavaScript中的函數(shù)調(diào)用
- 淺談js函數(shù)三種定義方式 & 四種調(diào)用方式 & 調(diào)用順序
- javascript函數(shù)的四種調(diào)用模式
- Javascript 函數(shù)的四種調(diào)用模式
- 深入理解JavaScript中的尾調(diào)用(Tail Call)
- javascript使用call調(diào)用微信API
- 基于JavaScript實(shí)現(xiàn)繼承機(jī)制之調(diào)用call()與apply()的方法詳解
- javaScript call 函數(shù)的用法說明
- JavaScript中的apply和call函數(shù)詳解
- JavaScript直接調(diào)用函數(shù)與call調(diào)用的區(qū)別實(shí)例分析
相關(guān)文章
微信小程序自定義組件的實(shí)現(xiàn)方法及自定義組件與頁面間的數(shù)據(jù)傳遞問題
這篇文章主要介紹了微信小程序自定義組件的實(shí)現(xiàn)方法及自定義組件與頁面間的數(shù)據(jù)傳遞 ,需要的朋友可以參考下2018-10-10js 提交form表單和設(shè)置form表單請求路徑的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨s 提交form表單和設(shè)置form表單請求路徑的實(shí)現(xiàn)方法。2016-10-10JavaScript中訪問id對象 屬性的方式訪問屬性(實(shí)例代碼)
下面小編就為大家?guī)硪黄狫avaScript中訪問id對象 屬性的方式訪問屬性(實(shí)例代碼)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10原生javascript的ajax請求及后臺PHP響應(yīng)操作示例
這篇文章主要介紹了原生javascript的ajax請求及后臺PHP響應(yīng)操作,結(jié)合示例形式分析了JavaScript前臺ajax請求的原理、調(diào)用、后臺PHP響應(yīng)請求及cookie保存相關(guān)操作技巧,需要的朋友可以參考下2020-02-02JavaScript中arguments.callee屬性的作用與替換方案
這篇文章介紹了JavaScript中arguments.callee屬性的作用與替換方案,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06在layui.use 中自定義 function 的正確方法
今天小編就為大家分享一篇在layui.use 中自定義 function 的正確方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09javascript搜索框效果實(shí)現(xiàn)方法
這篇文章主要介紹了javascript搜索框效果實(shí)現(xiàn)方法,可實(shí)現(xiàn)顯示默認(rèn)提示文字的搜索框效果,非常簡單實(shí)用,需要的朋友可以參考下2015-05-05