4 个回答

你第一个 true 就是因为重写了 prototype 导致 constructor 属性指向 Object

后面的问题其实就一句话:constructor 属性指向创建当前对象的构造函数

constructor 是定义在原型上面的,所以 p.constructor 由于 p 没有定义 constructor 属性,就会沿着原型链向上找

等同于:Person.prototype.constructor == Person

老板,你误入歧途了知道吗,简单点,我直接给你上图好吧
WechatIMG1.jpeg

实例对象的constructor本来就指向的是其构造函数,这是其一.
其二,constructor诶,大哥,这个属性不是什么obj.a,obj.b,这能跟这些普通属性相比吗,哪有继承的事

顺便说下,我观楼主代码,js大括号风格有点异教风格

p 是通过 Person 构造的,p 的构造函数就是 Person

默认实例对象的__proto__指向构造函数的prototype
你这样只是修改了函数内部prototype的指向
你试一下把Person.prototype这个放到外面来就可以

function Person() {

}    

Person.prototype = {
    name: "A",
    age: 21
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题