new是乙個運算子,在js中函式可以作為普通函式被呼叫做方法,也可以通過new來呼叫作為乙個構造器。
如果有乙個函式
function person(name,age)
}
進行new操作
var p = new person('richard', 23)
其實是進行了以下四步:
1.建立空物件2.讓建構函式person的this指向obj,並執行建構函式中的**(為新物件新增屬性)var p = {}
3.設定新物件的_proto_屬性指向建構函式person的prototype物件person.call(p)
4.返回該物件(對於乙個建構函式即使它最後沒有return,也會預設return this)p.__proto__ = person.prototype
如果是值型別,就丟棄它,還是返回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 ...