javascript-创建对象的几种方法

loading 2023年03月09日 72次浏览

1. 工厂模式

直接在函数中创建一个新的obj并给它赋值,缺点在于每一次通过工厂方法去创建一个对象,这个对象的属性name和方法sayName都必须重新创建一次,浪费内存。

  1. function createObj(){
  2. let obj = new Object();
  3. obj.name = 'asd';
  4. obj.sayName = function(){
  5. console.log(this.name)
  6. }
  7. return obj;
  8. }

  9. let obj = createObj();

2. 构造器模式

这种方法要通过this配合new去实现类似于构造函数的作用,缺点同上。

  1. function Obj(){
  2. this.name = 'asd';
  3. this.sayName = function(){
  4. console.log(this.name)
  5. }
  6. }

  7. let obj = new Obj();

3. 原型模式

把属性和方法定义在原型上而不是this上,缺点在于当有引用属性时,改变一个对象的这个属性也会改变其他对象的这个属性。

  1. function Obj(){}
  2. Obj.prototype.name = 'asd';
  3. Obj.prototype.sayName = function(){
  4. console.log(this.name);
  5. }

  6. let obj = new Obj();

4. 构造器/原型混合模式

属性定义在this上,方法定义在原型上。

  1. function Obj(){
  2. this.name = 'asd';
  3. this.arr = [1,2,3];
  4. }
  5. Obj.prototype.sayName = function(){
  6. console.log(this.name);
  7. }

  8. let obj = new Obj();