1.创建一个object的实例,再添加属性和方法
var person = new Object();
person .name = "zhangsan";
person.age = 20;
person.sayName = function(){
console.log(this.name);
}
2.字面量模式
var person = {
name:"zhangsan",
age:20,
sayName: function(){
console.log(this.name);
}
}
3.工厂模式(解决创建多个相似对象和大量代码重复问题)
function createPerson(name,age){
var o = new Object();
o.name = name;
o.age = age;
o.sayname = funtion(){
console.log(this.name)
}
return o;
}
var person1 = createPerson("zhangsan",20);
var person2 = createPerson("lisi",15);
4.构造函数模式(普通函数和构造函数的区别就在于有没有被实例化,构造函数名称习惯用大写字母)
function Person(name , age){
this.name = name;
this.age = age;
this.sayName = function(){
console.log(this.name)
}
}
var person1 = new Person("zhangsan",20);
var person2 = new Person("lisi",15);
5.原型模式(每个函数都有一个prototype属性,指向一个对象,这个对象可以共享属性和方法)
function Person(){
}
Person.prototype.name = "zhangsan";
Person.protoype.age = 29;
Person.prototype.sayName = function(){
console.log(this.name);
}
var person1 = new Person();
person1.sayName();//"zhangsan"
6.组合使用构造函数和原型模式(最常见的方式,构造函数用于定义实例属性,原型用于定义方法和共享属性)
function Person(name, age, job){
this.name = name;
this.age = age;
}
Person.prototype = {
constructor : Person,
sayName : function(){
alert(this.name);
}
}