new乙個物件的過程

2022-07-07 07:39:16 字數 1080 閱讀 2013

使用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)的值,則返回新例項物件;若返回值是引用型別的值,則實際返回值為這個引用型別。

1

function

person(name, age)

5var person = new person("alice", 23);

new乙個物件的四個過程:1、建立乙個空物件

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.使用新物件呼叫函式,函...