JavaScript 用new創建對象的過程


   在JavaScript中創建自定義對象都需要用new運算符,那么創建對象的過程是什么樣的呢?

例如現在有如下構造函數:

function Person(name) {
    this.name = name;
}
Person.prototype = {
    constructor: Person,
    sayName: function() {
         alert(this.name);
};
var jack = new Person("Jack");

首先,必須保證new運算符后跟着的是一個有[[Construct]]內部方法的對象,否則會拋出異常。

接下來就是創建對象的過程:

1.先創建一個原生對象,假定為obj = {}或obj = new Object,。

2.獲得構造函數Person的prototype對象,並將其賦給obj的[[Prototype]]屬性。在firefox中它表現為__proto__

3.call構造函數的內部方法,把其中的this賦值為新創建的對象obj,並傳入所需參數。

4.執行構造函數,並返回創建的對象。

這里有一點需要說明: 正常來講構造函數中是不用寫return語句的,因為它會默認返回新創建的對象。但是,如果在構造函數中寫了return語句,如果return的是一個對象,那么函數就會覆蓋掉新創建的對象,而返回此對象;如果return的是基本類型如字符串、數字、布爾值等,那么函數會忽略掉return語句,還是返回新創建的對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM