卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

《jQuery技術(shù)內(nèi)幕》一書中關于構(gòu)造函數(shù)返回值里的一句話如何理解?

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

網(wǎng)友解答:

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

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

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

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

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

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

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

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

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

標簽: