當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Javascript Object.create( )用法及代碼示例


JavaScript中的對象和對象構造函數?
在麵向對象編程的生活世界中,我們已經知道類和對象的重要性,但是與其他編程語言不同,JavaScript沒有其他語言所具有的傳統類。但是JavaScript具有對象和構造函數,它們在大多數情況下以相同的方式工作以執行相同的操作。

  • 構造函數是與“new”關鍵字一起使用的常規JavaScript函數。構造函數在JavaScript中有兩種類型,即內置構造函數(數組和對象)和自定義構造函數(定義特定對象的屬性和方法)。
  • 當我們需要一種創建可以多次使用而不必每次都重新定義對象的對象“type”的構造函數時,構造函數會很有用,這可以使用Object Constructor函數來實現。按照慣例,大寫的構造函數名稱會將其與常規函數區分開。

例如,考慮以下代碼:

function Automobile(color) {
  this.color=color;
}

var vehicle1 = new Automobile ("red");

函數“Automobile()”是一個對象構造函數,其屬性和方法即“color”在其內部聲明為關鍵字“this”。然後使用關鍵字“new”將使用對象構造函數定義的對象轉換為即時對象。


調用新的Automobile()時,JavaScript執行以下兩項操作:

  1. 它創建一個新的新對象(實例)Automobile()並將其分配給變量。
  2. 它將對象的構造函數屬性“color”設置為Automobile。

Object.create()方法
Object.create()方法用於創建具有指定原型對象和屬性的新對象。 Object.create()方法返回具有指定原型對象和屬性的新對象。

應用範圍:

  • Object.create()用於實現繼承。

用法:

Object.create(prototype[, propertiesObject])

Parameters Used:

  1. prototype :
  2. It is the prototype object from which a new object has to be created.

  3. propertiesObject : It is optional parameter. It specifies the enumerable properties to be added to the newly created object.

返回值:
Object.create() returns a new object with the specified prototype object and properties.

下麵提供上述函數的示例。

例子:


Input : function fruits() {
        this.name = 'fruit 1';
        }

        function apple() {
        fruits.call(this);
        }

        apple.prototype = Object.create(fruits.prototype);
        const app = new apple();
        console.log(app.name);

Output : "fruit 1"

說明:在此示例中,有兩個函數“fruits”和“apple”。創建了一個新的蘋果實例,名為“app”,並且已通過“fruits”的原型和屬性進行了指定,即this.name =“ fruit 1”。

Input : function fruits() {
        this.name = 'fruit 1';
        this.season = 'summer';
        }

        function apple() {
        fruits.call(this);
        }

        apple.prototype = Object.create(fruits.prototype);
        const app = new apple();
        console.log(app.name);
        console.log(app.season);

Output : "fruit 1"
         "summer"

說明:在此示例中,有兩個函數“fruits”和“apple”。創建了一個新的蘋果實例,名為“app”,並且已使用“fruits”的原型和屬性進行了指定,即this.name ='fruit 1'和this。季節=“夏季”。

下麵提供了上述函數的代碼。

代碼1:

<script> 
// creating a function which will be the  
//prototype for the object to be created later 
function fruits() { 
    this.name = 'fruit 1'; 
} 
  
// creating a function to whose object will  
// inherit properties from the prototype  
// using object.create() method 
function
apple() { 
    fruits.call(this); 
} 
  
// creating an object of the apple function which 
// will have properties of the prototype  
// object i.e. fruits 
apple.prototype = Object.create(fruits.prototype); 
const app = new apple(); 
  
// Displaying the created object 
console.log(app.name); 
< /script>

輸出:

"fruit 1"

代碼2:

<script> 
    // creating a function which will be the 
    // prototype for the object to be created later 
    function fruits() { 
        this.name = 'fruit 1'; 
        this.season = 'summer'; 
    } 
  
// creating a function to whose object  
// will inherit properties from the    
// prototype using object.create() method 
function apple() { 
    fruits.call(this); 
} 
  
// creating an object of the apple function which 
// will have properties of the prototype  
// object i.e. fruits 
apple.prototype 
    = Object.create(fruits.prototype); 
const app = new apple(); 
  
// Displaying the created object 
console.log(app.name); 
console.log(app.season); 
< /script>

輸出:

"fruit 1"
"summer"

異常:

  • 如果propertiesObject參數不為null,則Object.create()方法將引發TypeError異常。
  • 如果propertiesObject參數是非原始對象,則Object.create()方法將引發TypeError異常。

參考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create




注:本文由純淨天空篩選整理自Shubrodeep Banerjee大神的英文原創作品 Object.create() In JavaScript。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。