关于‘new’的一个小问题?

作者站长头像
站长
· 阅读数 8

关于‘new’的一个小问题?

上面是代码,想执行'person1.func3()'。

结果如下图关于‘new’的一个小问题?

疑问是,在实例对象person1的__proto__里能找到func3这个函数,为什么执行的时候会报错呢?

谢谢!


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Person.prototype.func3 = function () {
    console.log('this is func3')
  };
好像通过 实例.prototype  添加方法的话就能访问了。。。
为什么必须使用  prototype 添加才好使呢。。。
回复
1个回答
avatar
test
2024-07-04

你的 func3 是挂在 constructor 下面的,只是 Person 这个构造器的一个属性而已,和 Prototype 无关

而正常的原型链方法应该是挂在 [[Prototype]] 下面的

Person.prototype.func4 = function () { console.log('f4') }

answer image

要挂在原型下面才能被原型链找到使用。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容