为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米琪卡哇伊 2018-08-03 16:31:42
第六章:在创建对象的方式中有这样一种动态原型模式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);     }, };
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

一段代码的作用要看使用环境,一个功能的实现可能有很多种写法

下面的写法是我们最常见也是最常用的,那么上面的代码和下面的代码有什么区别呢?

区别就是上面的代码,sayName属性是作用在子对象上的,而下面的代码是作用在父对象上的

上面的代码如果修改一下

function Persion(hasSayName) {    //...
    if(hasSayName && typeof this.sayName !=="function"){        //...
    }
}var p1 = new Persionvar p2 = new Persion(true)

这样,代码的用意就特别清晰了


查看完整回答
反对 回复 2018-08-05
  • 2 回答
  • 0 关注
  • 692 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信