美文网首页JavaScript 使用记录
JavaScript 创建对象 2 构造函数模式

JavaScript 创建对象 2 构造函数模式

作者: 赵者也 | 来源:发表于2017-12-12 11:20 被阅读8次
        function Person(name, age, job) {
            this.name = name;
            this.age = age;
            this.job = job;
            this.sayName = function() {
                console.log(this.name);
            };
        }

        var person1 = new Person("Neo", 29, "Teacher");
        person1.sayName();
        var person2 = new Person("Toby", 30, "Software Engineer");
        person2.sayName();

        console.log(person1 instanceof Object);
        console.log(person1 instanceof Person);

上述代码输出结果:

输出结果
  1. 将构造函数当做函数
    我们可以将构造函数当做函数使用。实际上,不存在定义构造函数的特殊语法。任何函数,只要通过 new 操作符来调用,那它就可以作为构造函数;而任何函数,如果不通过 new 操作符调用,那它跟普通函数也不会有什么区别。

Person 构造函数的使用实例:

        var person1 = new Person("Neo", 29, "Teacher");
        person1.sayName();

        var o = new Object;
        Person.call(o, "Toby", 30, "Software Engineer");
        o.sayName();

我们看到 Person 也和普通函数一样,也可以正常使用 call 方法。

  1. 构造函数的问题

使用构造函数的主要问题,就是就是每个方法都要在每个实例上重新创建一遍。例如 sayName() 方法其实就是每个实例上都有一个全新的不同的对象,这其实很没必要。要解决这个问题需要使用到我们接下来要了解的原型模式。

相关文章

  • 链式操作

    对象字面量创建对象 构造函数创建对象 构造函数和原型一起创建对象 参考 JavaScript设计模式 --- 方法...

  • JavaScript创建对象之原型模式

    一、原型基础 在之前的文章:《JavaScript创建对象之单例、工厂、构造函数模式》中详细介绍了构造函数模式创建...

  • JavaScript创建对象(三)——原型模式

    在《JavaScript创建对象(二)——构造函数模式》中提到,构造函数模式存在相同功能的函数定义多次的问题。本篇...

  • 关于JavaScript创建对象的多种方式

    JavaScript创建对象的方法 工厂模式 构造函数模式 原型模式 组合使用构造函数模式和原型模式 动态原型模式...

  • JavaScript创建对象的高级方法

    创建对象的方法 读《JavaScript高级程序设计》所得。 工厂模式——》构造函数模式——》原型模式——》构造函...

  • 对象的创建与继承

    创建对象 工厂模式 => 构造函数模式 => 原型对象模式 => 构造函数模式+原型对象模式 工厂模式 构造函数模...

  • JavaScript创建对象

    JavaScript中创建对象有以下七种方式: 工厂模式构造函数模式原型模式构造函数和原型组合模式动态原型模式寄生...

  • js中创建对象的方式

    大纲:创建单个对象(Object构造函数,对象字面量)创建多个对象(工厂模式,构造函数模式,原型模式,组合使用构造...

  • 2020-12-15

    js对象的创建和函数 创建对象 工厂模式 构造函数 原型方式+构造函数

  • js创建对象的几种方式

    1.object创建对象 2.工厂模式创建对象 3.基于构造函数创建对象 4.基于原型创建对象 5.构造函数与原型...

网友评论

    本文标题:JavaScript 创建对象 2 构造函数模式

    本文链接:https://www.haomeiwen.com/subject/xyaiixtx.html