读《js高级程序设计》问题?

第六章:在创建对象的方式中有这样一种动态原型模式

function Persion() {    this.name="wyq";    this.friends=["a", "b", "c"];    //下面的代码有什么意义??? 每次new一个对象的时候肯定要执行里面的函数啊
    if(typeof this.sayName !=="function"){        this.sayName = function () {            console.log("friends",this.friends);
        }
    }
}

直接这样写不就好了吗?

function Persion() {    this.name="wyq";    this.friends=["a", "b", "c"];
}
Persion.prototype = {    sayName: function () {        console.log("this.name", this.name);
    },
};


米琪卡哇伊
浏览 695回答 2
2回答

慕工程0101907

一段代码的作用要看使用环境,一个功能的实现可能有很多种写法下面的写法是我们最常见也是最常用的,那么上面的代码和下面的代码有什么区别呢?区别就是上面的代码,sayName属性是作用在子对象上的,而下面的代码是作用在父对象上的上面的代码如果修改一下function Persion(hasSayName) {    //...     if(hasSayName && typeof this.sayName !=="function"){        //...     } }var p1 = new Persionvar p2 = new Persion(true)这样,代码的用意就特别清晰了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript