首頁 > web前端 > js教程 > 在 JavaScript 中建立自訂物件的原型設計和閉包方法有哪些?

在 JavaScript 中建立自訂物件的原型設計和閉包方法有哪些?

Patricia Arquette
發布: 2024-12-14 16:54:10
原創
467 人瀏覽過

What are the Prototyping and Closure Ways to Create Custom Objects in JavaScript?

如何在JavaScript 中「正確」建立自訂物件

建立自訂物件

有兩種主要方法在JavaScript中建立自訂物件:原型方法和閉包

原型化方式

使用此方法,物件的屬性和方法都在其原型上定義。以下範例建立一個 Shape 物件和一個對該 Shape 進行子類化的 Circle 物件:

function Shape(x, y) {
  this.x = x;
  this.y = y;
}

Shape.prototype.toString = function() {
  return 'Shape at ' + this.x + ', ' + this.y;
};

function Circle(x, y, r) {
  Shape.call(this, x, y); // Invoke base class constructor
  this.r = r;
}

Circle.prototype = new Shape(); // Create prototype inheritance link

Circle.prototype.toString = function() {
  return 'Circular ' + Shape.prototype.toString.call(this) + ' with radius ' + this.r;
};
登入後複製

Closure Way

此方法不使用繼承。相反,每個實例都有自己的屬性和方法副本。

function Shape(x, y) {
  var that = this;

  this.x = x;
  this.y = y;

  this.toString = function() {
    return 'Shape at ' + that.x + ', ' + that.y;
  };
}

function Circle(x, y, r) {
  var that = this;

  Shape.call(this, x, y); // Invoke base class constructor
  this.r = r;

  var _baseToString = this.toString;
  this.toString = function() {
    return 'Circular ' + _baseToString.call(that) + ' with radius ' + that.r;
  };
};
登入後複製

優點與缺點

原型製作方式

  • 優點:對於大型物體高效hierarchies
  • 缺點:實現起來比較複雜,instanceof操作符

閉包方式

  • 優點:實作比較簡單,獨立實例
  • 缺點:效率較低,沒有直接instanceof支援

選擇正確的方法

選擇取決於項目的特定要求。對於具有多個繼承層級的大型物件層次結構,原型可能是首選。對於簡單、獨立的對象,封閉方式往往更方便。

以上是在 JavaScript 中建立自訂物件的原型設計和閉包方法有哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板