谁能解释一下这个行为?关于constructor?

clipboard.png

clipboard.png

我的问题是:为什么给prototype赋值新的对象的时候,会改变实例化的对象o的constructor?
虽然两种行为中无论是构造函数内的this或者原型对象上的this都指向 实例化的对象,使用上貌似没有什么区别。
但是我还是不明白construtor为什么会被改变。

阅读 3.1k
5 个回答

因为上面,你只是在原型对象上添加了一个属性,原型对象还是原配,但是下面你是直接改写了原型对象,是抛弃了原来的,出轨了你新建的那个对象

constructor是prototype上一个指向自身的属性,第二种写法直接修改了prototype当然就没有之前的constructor了。

第二种是继承的写法

原型都置换掉了,constructor当然就没了啊。

简单理解为

    var a = {}
    var b = a
    b.hello = 'world'
    console.log(a.hello === b.hello)
    //true
    
    或者
    var a = {}
    var b = a
    b = {
        hello: "world"
    }
    console.log(a.hello === b.hello)
    //false

只能 aa.prototype.e = ... ;是你没有明白js的规则。 原因上面说的很清楚了。

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