成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

《jQuery技術內幕》一書中關于構造函數返回值里的一句話如何理解?

網友解答: 首先要說明的是,測試的是沒有問題的,只是在書中描述不夠詳細導致了誤導;而我認為真正的描述應該是:“如果構造函數有顯式返回一個對象,運算符new所創(chuàng)建的對象會被丟棄,返回值將作

網友解答:

首先要說明的是,測試的是沒有問題的,只是在書中描述不夠詳細導致了誤導;而我認為真正的描述應該是:“如果構造函數有顯式返回一個對象,運算符new所創(chuàng)建的對象會被丟棄,返回值將作為new表達式的值”;

如果要真正的理解原因,首先我們得知道在js中,new到底是干什么用的,在背后又具體做了什么?

概念:new 運算符創(chuàng)建一個用戶定義的對象類型的實例或具有構造函數的內置對象的實例。

那么,當使用new創(chuàng)建對象時,發(fā)生了什么事情呢?以new Foo(...)為例:

1、一個繼承自Foo.prototype 的新對象被創(chuàng)建;

2、使用指定參數調用構造函數Foo;并將this綁定到新創(chuàng)建的對象

3、由構造函數返回的對象就是 new 表達式的結果。如果構造函數沒有顯式返回一個對象,則使用步驟1創(chuàng)建的對象。一般情況下,構造函數不會返回值,但是開發(fā)人員也可以主動返回一個對象去覆蓋正常默認創(chuàng)建的對象;

所以,由上,我們可以簡單猜測new運算符的運行如下函數:

所以,綜上,書中描述應該是當構造函數返回對象時,如,對象、數組、函數等只要滿足_return instanceof Object為true的,都會進行覆蓋;

標簽: