JavaScript:new 一個(gè)函數(shù)和直接調(diào)用函數(shù)的區(qū)別分析
更新時(shí)間:2013年07月10日 11:40:28 作者:
或許許多人對(duì)此不以為然,在函數(shù)前加 new 關(guān)鍵字,不就是實(shí)例化一個(gè)對(duì)象嗎?但事情顯然沒(méi)那么簡(jiǎn)單
復(fù)制代碼 代碼如下:
function Test() {
this.name = 'Test';
return function() { return true; }
}
var test = new Test(); // 這里的 test 是什么?
是一個(gè) Test 對(duì)象嗎?錯(cuò)!這里 test 是一個(gè)函數(shù)——Test 中返回的 function() { return true; }。這時(shí),new Test() 等效于 Test(),注意,是等效于,不是等于,如果使用new Test() == Test() 判定兩者是否相等,則會(huì)返回 false,因?yàn)?Javascript 對(duì)于 Object 和 Function 的比較是基于引用的。
為了更清晰的分辨在上述情形下兩者間的區(qū)別,請(qǐng)繼續(xù)看以下代碼:
復(fù)制代碼 代碼如下:
function Test() {
this.name = 'Test';
return 'Test';
}
var fnT = Test();
var newT = new Test();
顯然,fnT 是字符串 Test,那 newT 呢?呵呵,是不是被第一個(gè)樣例迷惑了?其實(shí),此時(shí) newT 是一個(gè) Test 對(duì)象——有一個(gè)名為 name 的屬性,其值為字符串 Test。
通過(guò)上面兩段代碼,我們可以得出一個(gè)猜測(cè),如果函數(shù)返回值為常規(guī)意義上的值類型(Number、String、Boolean)時(shí),new 函數(shù)將會(huì)返回一個(gè)該函數(shù)的實(shí)例對(duì)象,而如果函數(shù)返回一個(gè)引用類型(Object、Array、Function),則 new 函數(shù)與直接調(diào)用函數(shù)產(chǎn)生的結(jié)果等同。通過(guò)在 Test 函數(shù)中返回不同類型的值進(jìn)行測(cè)試,可以證實(shí)這一點(diǎn)。
分清這一點(diǎn),其實(shí)還是蠻重要的,至少在看一些面向?qū)ο蟮目蚣茴悗?kù)代碼時(shí),會(huì)少一些疑惑。
您可能感興趣的文章:
- 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ù)的用法說(shuō)明
- JavaScript中的apply和call函數(shù)詳解
- JavaScript直接調(diào)用函數(shù)與call調(diào)用的區(qū)別實(shí)例分析
相關(guān)文章
JavaScript數(shù)據(jù)結(jié)構(gòu)中棧的應(yīng)用之表達(dá)式求值問(wèn)題詳解
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)中棧的應(yīng)用之表達(dá)式求值問(wèn)題,詳細(xì)分析了中綴表達(dá)式、后綴表達(dá)式等概念、原理與轉(zhuǎn)換方法,以及基于后綴表達(dá)式實(shí)現(xiàn)的表達(dá)式求值相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
SelectPage v2.4 發(fā)布新增純下拉列表和關(guān)閉分頁(yè)功能
下拉分頁(yè)選擇插件 SelectPage v2.4 發(fā)布了,新增純下拉列表和關(guān)閉分頁(yè)功能,下面通過(guò)本文給大家啊介紹SelectPage的相關(guān)知識(shí),感興趣的的朋友一起看看吧2017-09-09
javascript基礎(chǔ)知識(shí)大全 便于大家學(xué)習(xí),也便于我自己查看
發(fā)些javascript基礎(chǔ)知識(shí),便于大家學(xué)習(xí),也便于我自己查看2012-08-08
JavaScript中文件緩存導(dǎo)致404錯(cuò)誤的解決方案
當(dāng) JavaScript 文件在服務(wù)器上被更新或刪除后,瀏覽器仍然請(qǐng)求舊的緩存文件,導(dǎo)致 404 錯(cuò)誤,本文將深入探討這一問(wèn)題的原因,并提供多種解決方案,需要的可以參考下2025-03-03

