//对象创建模式
//方式一:Object构造函数模式
var p=new Object();
p.name='Tom';
p.age=12;
p.setName=function (name){
this.name=name;
}
p.setName('Jack');
console.log(p.name,p.age);
//方式二:对象字面量
var p={
name:'Tom',
age:12,
setName:function (name){
this.name=name;
}
};
console.log(p.name,p.age);
//方式三:工厂模式:通过工厂函数动态创建对象并返回。(缺点:不能确定对象的具体类型)
function createPerson(name,age){
var obj={
name:name,
age:age,
setName:function(){
this.name=name;
}
};
return obj;
}
var p1=createPerson('zain',12);
var p2=createPerson('Bob',13);
//方式四:自定义构造函数模式(当创建多个对象有相同数据,浪费内存,可以把共有的东西放在原型里。看方式5)
function Person(name,age){
this.name=name;
this.age=age;
this.setName=function (name){
this.name=name;
}
}
var p1=new Person('Tom',12);
function Student(name,price){
this.name=name;
this.price=price;
}
var s1=new Student("Bob",12000);
//方式5:构造函数+原型的组合模式
function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype.setName=function (name){
this.name=name;
}
var p1=new Person('Tom',12);
var p2=new Person('Jack',13);
console.log(p1,p2);
sometimes the hardest part isn't letting go,but rather start over