new乙個新物件的過程中都發生了什麼?

2021-10-03 20:29:20 字數 680 閱讀 3341

new是乙個運算子,在js中函式可以作為普通函式被呼叫做方法,也可以通過new來呼叫作為乙個構造器。

如果有乙個函式

function person(name,age)

}

進行new操作

var p = new person('richard', 23)
其實是進行了以下四步:

1.建立空物件 

var p = {}
2.讓建構函式person的this指向obj,並執行建構函式中的**(為新物件新增屬性)

person.call(p)
3.設定新物件的_proto_屬性指向建構函式person的prototype物件

p.__proto__ = person.prototype
4.返回該物件(對於乙個建構函式即使它最後沒有return,也會預設return this)

如果是值型別,就丟棄它,還是返回p。

如果是引用型別,就返回這個引用型別的物件,替換掉p。

5.將初始化完畢的新物件位址,儲存到等號左邊的變數中

new乙個物件發生什麼?

doctype html en utf 8 viewport content width device width,initial scale 1.0 x ua compatible content ie edge document title head 物件直接量 自變數 var zs new o...

new乙個物件的過程

class a public void a string name,int age class b 執行順序 1 因為new用到了 a.class,所以會先找到a.class檔案並載入到記憶體中 2 執行該類中的static 塊,如果有的話,給a.class類進行初始化。3 在堆記憶體中開闢空間,分...

new乙個物件的過程

1.靜態 塊 2.預設初始化 3.構造 塊 4.構造方法 靜態 塊先執行,構造 塊執行,物件內執行 class person static public class persondemo2 執行結果 列印 靜態 塊1 構造 塊2 建構函式3 class a public void a string ...