美文网首页JavaScript 使用记录
JavaScript 创建对象 5 动态原型模式

JavaScript 创建对象 5 动态原型模式

作者: 赵者也 | 来源:发表于2017-12-13 17:22 被阅读24次

    动态原型模式,这种模式的目的是将原本独立的构造函数和原型进行整合封装。这样在构造函数中初始化原型(仅在必要的时候),换句话说,可以通过检查某个应该存在的方法是否有效,来决定是否需要初始化原型。来看一个例子:

            function Person(name, age, job) {
                this.name = name;
                this.age = age;
                this.job = job;
                this.friends = ["Toby", "Tina"];
                if (typeof this.sayName != "function") {
                    Person.prototype.sayName = function() {
                        console.log(this.name);
                    }
                }
                // 以下代码,确保通过 constructor 属性还能像之前的语法那样能够访问到适当的值
                Object.defineProperty(Person.prototype, "constructor", {
                                          enumerable: false,
                                          value: Person
                                      });
            }
    
            var person1 = new Person("Neo", 29, "Software Engineer");
            person1.sayName();
    

    这段代码将输出:

    输出结果

    对应采用这种模式创建的对象,还可以使用 instanceof 操作符确定它的类型。

    注意:使用动态原型模式时,不能使用对象字面量重写原型。因为,如果在已经创建了实例的情况下重写原型,那么就会切断现有实例与新原型之间的联系。

    相关文章

      网友评论

        本文标题:JavaScript 创建对象 5 动态原型模式

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