创建自定义对象
有两种主要方法在 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中文网其他相关文章!