240 发简信
IP属地:湖南
  • 博主大部分都分析的可以了,就是原型链没有说清楚,导致评论出现误解,实例没有的属性,js会尝试往原型对象上找,原型对象上没有,再往原型对象的-proyo-(Object.prototype)上找,最终会找到Object.prototype._proto_(他就是原型链的终点null),找到就返回对应的值,没找到就返回undefined

    最详尽的 JS 原型与原型链终极详解,没有「可能是」。(一)

    第二篇已更新,点击进入第三篇已更新,点击进入 三篇文章都更新完毕,完整的剖析了 JS 原型与原型链,希望通过这些教程能让你对 Javascript 这门语言理解的更透彻! 一...

  • 关于第二大点,
    “这两个实例都有一个 constructor (构造函数)属性,该属性(是一个指针)指向 Person“
    “ console.log(person1.constructor == Person);//true“
    “console.log(person2.constructor == Person); //true”
    我觉得这里的说法有点出入
    如果直接打印person1和person2对象,就会发现并没有发现有constructor属性。打印内容如下
    {age:28
    job:"Software Engineer"
    name:"Zaxlct"
    sayName:ƒ ()
    __proto__:Object}
    那为什么person1.constructor == Person 这个会是true,实际是因为在person1中没有找到constructor属性,顺着__proto__往上,找到了Person.prototype,而在这里才找到的constructor,而这个constructor是指向Person的,所以结果才会是true
    但是这并不能说是实例上有一个constructor属性,我觉得这容易产生误解。
    以上是个人观点,有错误请指正,谢谢。