资讯专栏INFORMATION COLUMN

js面向对象-工厂模式和构造函数模式

seasonley / 2882人阅读

摘要:使外部调用时只要知道这个方法的存在多态父类的方法继承的到子类以后可以有不同的实现方式创建对象为了避免重复造轮子,产生大量的代码,我们可以使用工厂模式和构造函数模式。像和这样的原生构造函数,在运行时会自动出现在执行环境中。

什么是面向对象

把数据和行为(对数据的操作)结合起来,有类的概念,通过类创建任意多个具有相同属性和方法的对象

继承:可以使子类复用父类公开的变量、方法;

封装:屏蔽一系列的细节。使外部调用时只要知道这个方法的存在;

多态:父类的方法继承的到子类以后可以有不同的实现方式;

var Person = {
    name: "wheeler",
    age: 25,
    inMeeting: function () {
        return "I am in Meeting";
    }
};
创建对象

为了避免重复造轮子,产生大量的代码,我们可以使用工厂模式和构造函数模式。
创建对象目前有两种方式:

对象字面量

var Person = {
    name: "wheeler",
    age: 25,
    inMeeting: function () {
        return "I am in Meeting";
    }
};

优点:灵活方便
缺点:每创建一个新的对象都需要写出完整的定义语句,不便于创建大量相同类型的对象,不利于使用继承等高级特性

使用new表达式

主要是配合构造函数使用

function Person(name, age, dream){
    this.name = name;
    this.age = age;
    this.dream = dream;
    this.myDream =function () {
        alert(this.dream);
    }
};
person1 = new Person("wheeler", 25, "哈哈");
person2 = new Person("wheeler2", 26, "嘿嘿");
工厂模式

什么是工厂模式?就是像工厂一样批量创建对象。具体来说,抽象创建具体对象的过程。

var createPerson = function (name, age, dream) {
    var person = {
        name: name,
        age: age,
        dream: function () {
            return dream;
        }
    };
    return person;

};
var person1 = createPerson("wheeler", 25, "哈哈");
var person2 = createPerson("wheeler2", 26, "嘿嘿");
构造函数模式

ECMAScript 中的构造函数可用来创建特定类型的对象。像Object和Array这样的原生构造函数,在运行时会自动出现在执行环境中。

function Person(name, age, dream){
    this.name = name;
    this.age = age;
    this.dream = dream;
    this.myDream =function () {
        alert(this.dream);
    }
};
var person1 = new Person("wheeler", 25, "哈哈");
var person2 = new Person("wheeler2", 26, "嘿嘿");

以上代码:

没有显式地创建对象;

直接将属性和方法赋给了this对象;

没有return语句。

以这种方式调用构造函数实际上会经历以下4个步骤:

创建一个新对象;

将构造函数的作用域赋给新对象(因此this就指向了这个新对象);

执行构造函数中的代码(为这个新对象添加属性);

返回新对象。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96747.html

相关文章

  • JS面向对象编程之封装

    摘要:在基于原型的面向对象方式中,对象则是依靠构造函数和原型构造出来的。来看下面的例子优点与单纯使用构造函数不一样,原型对象中的方法不会在实例中重新创建一次,节约内存。 我们所熟知的面向对象语言如 C++、Java 都有类的的概念,类是实例的类型模板,比如Student表示学生这种类型,而不表示任何具体的某个学生,而实例就是根据这个类型创建的一个具体的对象,比如zhangsan、lisi,由...

    YFan 评论0 收藏0
  • JavaScript面向对象OOM 2(JavaScript 创建对象工厂模式构造函数模式

    摘要:都是构造函数模式创建的原生构造函数。使用构造函数创建对象经历了以下四个过程创建一个新对象构造函数的作用域交给新对象。   在创建对象的时候,使用对象字面量和 new Object() 构造函数的方式创建一个对象是最简单最方便的方式。但是凡是处于初级阶段的事物都会不可避免的存在一个问题,没有普适性,意思就是说我要为世界上(程序中)的所有使用到的对象都使用一遍 var xxx = {} ,...

    you_De 评论0 收藏0
  • JavaScript面向对象OOM 2(JavaScript 创建对象工厂模式构造函数模式

    摘要:都是构造函数模式创建的原生构造函数。使用构造函数创建对象经历了以下四个过程创建一个新对象构造函数的作用域交给新对象。   在创建对象的时候,使用对象字面量和 new Object() 构造函数的方式创建一个对象是最简单最方便的方式。但是凡是处于初级阶段的事物都会不可避免的存在一个问题,没有普适性,意思就是说我要为世界上(程序中)的所有使用到的对象都使用一遍 var xxx = {} ,...

    liuchengxu 评论0 收藏0
  • js中的面向对象入门

    摘要:简单来理解对象就是由属性和方法来组成的面向对象的特点封装对于一些功能相同或者相似的代码,我们可以放到一个函数中去,多次用到此功能时,我们只需要调用即可,无需多次重写。 什么是对象 我们先来看高程三中是如何对对象进行定义的 无序属性的集合,其属性可以包括基本值、对象或者函数,对象是一组没有特定顺序的的值。对象的没个属性或方法都有一个俄名字,每个名字都映射到一个值。 简单来理解对象就是由属...

    sihai 评论0 收藏0
  • JavaScript面向对象 - 创建对象(上)

    摘要:对象字面量创建对象张三学生这种方式的好处显而易见,就是解决了之前的缺点。构造函数模式张三学生李四学生与之前工厂模式的方法对比变量名首字母大写了在函数内没有显式的创建及返回对象而使用了创建时使用了关键字。 面向对象是JS的重点与难点,但也是走向掌握JS的必经之路,有很多的文章或书籍中都对其进行了详细的描述,本没有必要再写这些,但是对于学习来说,讲给别人听对自己来说是一种更好的受益方式。我...

    sourcenode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<