1、构造函数创建
function Person(name) {
this.name = name;
this.sayName = sayName;
}
var person1 = new Person('Jhonha');
构造函数与其他函数的区别:唯一区别是调用的方式不同,只要通过new操作符调用的函数,那该函数就是构造函数
// 当作构造函数使用
var person = new Person("Jhonha", 27, "dancer");
person.sayName();
// 作为普通函数调用
Person("Ciris", 22, "software engineer");//调用该函数的对象是windows
window.sayName();
2、对象字面量的方式
var person = {
age: 18,
say: function() {
console.log(this.age)
}
}
3、工厂模式
无需重复编写创建对象的代码
function createPerson(name, age, job) {
var o = new Object();
o.name = name;
o.sayName = function () {
console.log(this.name);
};
return o;
}
var person1 = createPerson('Jhonha', 22, 'dancer');
4、原型模式
function Person(){}
Person.prototype = {
constructor : Person, //指向构造器
name: "Jhonha",
sayName: function(){
return this.name;
}
};
var person1 = new Person();
console.log(person1.name); // Jhonha
console.log(person1.sayName()); // Jhonha
优点:由Person构造函数创建的实例,可以共享其prototype原型对象上的属性和方法