JavaScript 提供了兩種不同的方法來建立具有屬性和方法的自訂物件:原型方式和閉包方式。
這種方法對於JavaScript 來說更加原生,並且利用了構造函數的原型查找屬性
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 constructor this.r = r; } Circle.prototype = new Shape(); // Set subclass prototype Circle.prototype.toString = function() { return 'Circular ' + Shape.prototype.toString.call(this) + ' with radius ' + this.r; };
此方法完全避免了原型繼承,為每個實例建立一個新的閉包。
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 constructor this.r = r; var _baseToString = this.toString; this.toString = function() { return 'Circular ' + _baseToString.call(that) + ' with radius ' + this.r; }; } var myCircle = Circle(); // Using `new` is optional here
兩種方法各有優點
原型方式
閉包方式
最終,最佳選擇取決於特定的專案要求和偏好。
以上是原型與閉包:哪種 JavaScript 物件建立方法適合您?的詳細內容。更多資訊請關注PHP中文網其他相關文章!