前端创建对象?
程序员文章站
2022-07-07 20:35:12
虽然Object构造函数或者对象字面量都可以创建单个对象,但是这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码,为了解决这个问题,现在很多人创建了很多不同的模式来解决这个问题 1>工厂模式:工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象创建具体对象的过程 2>构造 ......
虽然Object构造函数或者对象字面量都可以创建单个对象,但是这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码,为了解决这个问题,现在很多人创建了很多不同的模式来解决这个问题
1>工厂模式:工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象创建具体对象的过程
function CreatPerson(name,age,job) { var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function () { console.log(this.name); }; return o; } var person1=new CreatPerson('kobe',39,'player'); person1.sayName();
2>构造函数模式:经历4个步骤1>创建一个新对象2>将构造函数的作用域赋给新对象(因此this就指向这个新对象)3>执行构造函数中的代码(为这个新对象添加属性)4>返回新对象
构造函数就是你用new创建对象时调用的函数。使用构造函数的好处在于所有用同一个构造函数创建的对象都具有同样的属性和方法。
function Person(name) { this.name=name; this.sayName=function () { console.log(this.name); } } var person1=new Person('kobe'); var person2=new Person('james'); console.log(person1.name); console.log(person2.name); person1.sayName(); person2.sayName();
console.log(person1 instanceof Person);
console.log(person2 instanceof Person);
3>原型对象:将信息直接添加在原型对象上,我们创建的每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,而这个对象的用途的就是可以让所有实例对象共享它所包含的属性和方法
缺点:使用原型,所有实例对象都有共同的属性和方法,所有会造成不好的影响,
1 Person.prototype= { 2 name:'kobe', 3 age:39, 4 sayName:function () { 5 console.log(this.name+'---'+this.age); 6 } 7 } 8 9 var person1=new Person(); 10 person1.sayName();