码迷,mamicode.com
首页 > 其他好文 > 详细

创建对象

时间:2020-11-12 13:56:00      阅读:7      评论:0      收藏:0      [点我收藏+]

标签:无法   OLE   开发人员   rip   ret   ons   cti   模式   大写   

虽然Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码。为解决这个问题,人们开始使用工厂模式的一种变体

工厂模式

这种模式抽象了创建具体对象的过程。考虑到在ECMAScript 中无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节

示例:

   // 工厂模式
    function createPerson(name, age, job) {
      var persion = new Object();
      persion.name = name;
      persion.age = age;
      persion.job = job;
      persion.sayName = function() {
        console.log(this.name);
      }
      return persion;
    }
    var persion1 = createPerson("zz", 20, "大一");
    var persion2 = createPerson("pp", 22, "大三");

缺点 :

  • 工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即怎样知道一个对象的类型)。

构造函数模式

 ECMAScript 中的构造函数可用来创建特定类型的对象.

可以创建自定义的构造函数,从而定义自定义对象类型的属性和方法。

示例:

// 构造函数模式
    function Person(name, age, job) {
      this.name = name;
      this.age = age;
      this.job = job;
      this.sayName = function() {
        console.log(this.name);
      }
    }
    var persion3 = new Person("cc", 20, "大一");
    var persion4 = new Person("dd", 22, "大二");
    // 这两个对象都有一个constructor(构造函数)属性,该属性指向Person,
    console.log(persion3.constructor == Person);//true

 

工厂模式与构造函数模式不同之处:

  •  没有显式地创建对象;
  •  直接将属性和方法赋给了this 对象;
  • 没有return 语句。

  此外,还应该注意到函数名Person 使用的是大写字母P。

new操作符调用构造函数经历的4个步骤:

  • (1) 创建一个新对象;
  • (2) 将构造函数的作用域赋给新对象(因此this 就指向了这个新对象);
  • (3) 执行构造函数中的代码(为这个新对象添加属性);
  • (4) 返回新对象。

将构造函数当作函数使用

 

创建对象

标签:无法   OLE   开发人员   rip   ret   ons   cti   模式   大写   

原文地址:https://www.cnblogs.com/chunying/p/13796801.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!