Js new到底發生了什麼

2022-07-19 07:48:10 字數 900 閱讀 5633

在js中,我們使用了new關鍵字來進行例項化

那麼在這個new的過程中到底發生了什麼?

關於建構函式的return

正常來講建構函式中是不用寫return語句的,因為它會預設返回新建立的物件。

但是,如果在建構函式中寫了return語句,如果return的是乙個物件,那麼函式就會覆蓋掉新建立的物件,而返回此物件。

如果return的是基本型別如字串、數字、布林值等,那麼函式會忽略掉return語句,還是返回新建立的物件。

1

function

foo()

5 foo.prototype.saymessage = function()8

9var obj = new foo();

我們來看看返回了什麼:

我們再來看看返回了什麼:

其實在new的過程中發生了四步操作:

1

var obj = new

object();

2 obj.__proto__ =foo.prototype;

34 obj = (returnval instanceof object && returnval) || obj;

JS new物件內部發生了什麼

function animate name animate.prototype.dance function var dog new animate 小白 dog.dance new animate 小白 時發生的事情 1.建立了乙個新物件 var obj 2.將animate中的this關鍵字指向...

Measure 0,0 到底發生了什麼

最開始接觸這個方法的時候是在寫自定義控制項的時候,比如,父控制項的高度需要根據子控制項來動態改變,那麼我們就需要手動的去測量每乙個子控制項,然後他們的總高度就是父類最終的高度了。在大多數情況下,這個邏輯可能是能夠走通的,但是,我會舉個栗子來讓這個邏輯走不通。1.如果我對乙個原生的view使用meas...

C 引數傳遞時到底發生了什麼

1 引用型別的變數只包含物件所在的記憶體位址,將要複製的是記憶體位址而不是物件本身,所以對底層物件的修改會保留。unsafeclassprogram fixed int pid mye.id 值為 uint pid uint pid testmethod mye fixed int pid mye....