建立自訂物件
有兩種主要方法在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; }; };
優點與缺點
原型製作方式
閉包方式
選擇正確的方法
選擇取決於項目的特定要求。對於具有多個繼承層級的大型物件層次結構,原型可能是首選。對於簡單、獨立的對象,封閉方式往往更方便。
以上是在 JavaScript 中建立自訂物件的原型設計和閉包方法有哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!