使用new關鍵字呼叫函式(new classa(…))的具體步驟:
1. 建立空物件;
var obj = {};
2. 設定新物件的constructor屬性為建構函式的名稱,設定新物件的__proto__屬性指向建構函式的prototype物件;
obj._ proto_ = classa.prototype;
3. 使用新物件呼叫函式,函式中的this被指向新例項物件:
classa.call(obj); //{}.建構函式();
4. 將初始化完畢的新物件位址,儲存到等號左邊的變數中
注意:若建構函式中返回this或返回值是基本型別(number、string、boolean、null、undefined)的值,則返回新例項物件;若返回值是引用型別的值,則實際返回值為這個引用型別。
1new乙個物件的四個過程:1、建立乙個空物件function
person(name, age)
5var person = new person("alice", 23);
var obj = new object();2、讓person中的
this
指向obj,並執行person的函式體
var result = person.call(obj);3、設定原型鏈,將obj的
__proto__
成員指向了person函式物件的prototype
成員物件
obj.__proto__ = person.prototype;4、判斷person的返回值型別,如果是值型別,返回obj。如果是引用型別,就返回這個引用型別的物件。
if (typeof(result) == "object")person =result;
else
person = obj;
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 ...
new乙個物件的過程
使用new關鍵字呼叫函式 new classa 的具體步驟 1.建立空物件 var obj 2.設定新物件的constructor屬性為建構函式的名稱,設定新物件的 proto 屬性指向建構函式的prototype物件 obj.proto classa.prototype 3.使用新物件呼叫函式,函...