扫码关注官方订阅号
我的问题是:为什么给prototype赋值新的对象的时候,会改变实例化的对象o的constructor?虽然两种行为中无论是构造函数内的this或者原型对象上的this都指向 实例化的对象,使用上貌似没有什么区别。但是我还是不明白construtor为什么会被改变。
光阴似箭催人老,日月如移越少年。
因为上面,你只是在原型对象上添加了一个属性,原型对象还是原配,但是下面你是直接改写了原型对象,是抛弃了原来的,出轨了你新建的那个对象
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的规则。 原因上面说的很清楚了。
aa.prototype.e = ...
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
因为上面,你只是在原型对象上添加了一个属性,原型对象还是原配,但是下面你是直接改写了原型对象,是抛弃了原来的,出轨了你新建的那个对象
constructor是prototype上一个指向自身的属性,第二种写法直接修改了prototype当然就没有之前的constructor了。
第二种是继承的写法
原型都置换掉了,constructor当然就没了啊。
简单理解为
只能
aa.prototype.e = ...;是你没有明白js的规则。 原因上面说的很清楚了。