Javascript创建对象:
1)Object对象:
var obj = new Object();
obj.name = "XC";
obj.age = 18;
obj.description = function() {
console.log(this.name + " -> " + this.age);
}
2)字面量:
var obj = {
name: "XC",
age: 18,
description: function() {
console.log(this.name + " -> " + this.age);
}
}
3)工厂模式:
function createObj(name, age) {
var obj = new Object();
obj.name = name;
obj.age = age;
obj.description = function() {
console.log(this.name + " -> " + this.age);
};
return obj;
}
var obj1 = createObj("XC", "18");
4)构造函数模式:
function Person(name, age) {
this.name = name;
this.age = age;
this.description = function() {
console.log(this.name + " -> " + this.age);
}
}
var person1 = new Person("XC", 18);
5)原型模式:
function Person() {}
Person.prototype.name = "XC";
Person.prototype.age = 18;
Person.prototype.description = function() {
console.log(this.name + " -> " + this.age);
};
var person = new Person();
6) 组合构造函数模式和原型模式:
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.description = function () {
console.log(this.name + " -> " + this.age);
};
var person1 = new Person("XC", 18);
7) 动态原型模式:
function Person(name, age) {
this.name = name;
this.age = age;
if (typeof this.description != "function") {
Person.prototype.description = function() {
console.log(this.name + " -> " + this.age);
};
}
}
var person1 = new Person("XC", 18);
8)寄生构造函数模式:
function Person(name, age) {
var obj = new Object();
obj.name = name;
obj.age = age;
obj.description = function() {
console.log(this.name + " -> " + this.age);
};
return obj;
}
var person = new Person("XC", 18);
注意:通过寄生构造函数创建的对象类型为Object 而不是构造函数类型(Person), 可通过instanceof操作符进行判断,
该模式和工厂模式实际上是一样的;
9)稳妥构造函数模式(稳妥对象,指的是没有公共属性):
function Person(name, age) {
var obj = new Object();
obj.description = function() {
console.log(name + " -> " + age);
};
return obj;
}
var person = Person("XC", 18);