JS创建对象的方法汇总
1. 工厂模式
function createPerson(name, age, gender) {
var obj = new Object();
obj.name = name;
obj.age = age;
obj.gender = gender;
obj.sayName = function() {
console.log(this.name);
}
return obj;
}
var person1 = createPerson('Tom', 23, 'Male');
工厂模式的优点是可以轻松创建多个相似的对象,但是没有办法识别对象的类型。
2. 构造函数模式
function Person(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
this.sayName = function() {
console.log(this.name);
}
}
var person1 = new Person('Tom', 23, 'Male');
构造函数模式用于创建多个相似的对象,但是它可以识别对象的类型,并且使用new
操作符调用构造函数时,this
关键字会绑定到新对象上,所以不需要手动创建新对象。
3. 原型模式
function Person() {}
Person.prototype.name = 'Tom';
Person.prototype.age = 23;
Person.prototype.gender = 'Male';
Person.prototype.sayName = function() {
console.log(this.name);
}
var person1 = new Person();
person1.sayName();
原型模式用于设置对象共享的属性和方法,它允许多个实例共享同一个对象,从而节省了内存空间。但是,在修改一个实例的属性时,会因为找不到该属性而直接在原型上进行修改,最终导致其他实例的该属性被改变。
4. 组合模式
function Person(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
Person.prototype.sayName = function() {
console.log(this.name);
}
var person1 = new Person('Tom', 23, 'Male');
person1.sayName();
组合模式将构造函数模式和原型模式组合在一起使用,构造函数模式用于定义实例属性,原型模式用于定义共享属性和方法。这样就既可以识别对象类型,又可以节省内存空间。
5. 动态原型模式
function Person(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
if(typeof this.sayName != "function") {
Person.prototype.sayName = function() {
console.log(this.name);
}
}
}
var person1 = new Person('Tom', 23, 'Male');
person1.sayName();
动态原型模式将对象构造函数和原型对象组合在一起使用。它通过检查原型对象中是否包含需要的方法,如果不存在,则在运行时动态创建该方法。这样就可以在保证对象类型的同时,节省内存空间。
结论
以上就是JS创建对象的常见方法。每种方法都有其优缺点,应该根据实际情况选择合适的方法。如果需要创建多个相似的对象,则可以使用工厂模式、构造函数模式或组合模式。如果需要设置共享属性和方法,则可以使用原型模式或动态原型模式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js创建对象的方法汇总 - Python技术站