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

        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);

上述代码输出结果:

JavaScript 创建对象 2 构造函数模式_第1张图片
输出结果
  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 创建对象 2 构造函数模式)