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

上述代码输出结果:

输出结果
  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() 方法其实就是每个实例上都有一个全新的不同的对象,这其实很没必要。要解决这个问题需要使用到我们接下来要了解的原型模式。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容