下面是关于“JS 创建对象的模式实例小结”的完整攻略,其中包含两个示例说明:
JS 创建对象的模式实例小结
在 JavaScript 中,创建对象有多种模式,不同的模式适用于不同的场景和需求。本文将对常见的四种创建对象的模式做一个简单介绍和小结,方便读者选择合适的模式进行对象创建。
一、工厂模式
工厂模式通过工厂方法创建对象,将创建对象的过程封装在一个函数中,通过调用该函数来创建对象。相比直接使用构造函数创建对象,工厂模式可以隐藏对象创建的细节,让用户更加容易使用。
示例
function createPerson(name, age) {
var obj = new Object();
obj.name = name;
obj.age = age;
obj.sayName = function () {
console.log(this.name);
};
return obj;
}
var person1 = createPerson('Tom', 20);
var person2 = createPerson('Jerry', 22);
person1.sayName(); // 输出:"Tom"
person2.sayName(); // 输出:"Jerry"
二、构造函数模式
构造函数模式通过特定的函数(即构造函数)创建对象,构造函数中可以使用 this
关键字来指代要创建的对象,通过 new
关键字来调用构造函数并返回一个新的对象。和工厂模式相比,对象的类型更加明确,也更符合面向对象编程的思想。
示例
function Person(name, age) {
this.name = name;
this.age = age;
this.sayName = function () {
console.log(this.name);
}
}
var person1 = new Person('Tom', 20);
var person2 = new Person('Jerry', 22);
person1.sayName(); // 输出:"Tom"
person2.sayName(); // 输出:"Jerry"
三、原型模式
原型模式基于 JavaScript 的原型继承,使用 prototype
属性来为对象添加属性和方法。相比构造函数模式,原型模式的代码更加简洁,方法和属性也可以被多个对象共享,减少内存占用。
示例
function Person() {}
Person.prototype.name = 'Tom';
Person.prototype.age = 20;
Person.prototype.sayName = function () {
console.log(this.name);
};
var person1 = new Person();
var person2 = new Person();
person1.sayName(); // 输出:"Tom"
person2.sayName(); // 输出:"Tom"
四、组合模式
组合模式是使用构造函数模式和原型模式的一种组合,可以兼具两者的优点,既可以给对象添加属性和方法,也可以共享原型对象的属性和方法。用 constructor
指向构造函数,用 prototype
添加属性和方法即可。
示例
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype = {
constructor: Person,
sayName: function () {
console.log(this.name);
}
};
var person1 = new Person('Tom', 20);
var person2 = new Person('Jerry', 22);
person1.sayName(); // 输出:"Tom"
person2.sayName(); // 输出:"Jerry"
总结:以上的四种创建对象的模式可以满足不同场景下的需求,可以根据项目的实际需求进行选择和使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS 创建对象的模式实例小结 - Python技术站