修改原型属性对现有实例的影响分情况:值类型直接赋值影响所有未自定义该属性的实例;引用类型内部修改影响所有实例,整体替换仅影响操作实例自身;重写整个prototype对象对已有实例无效。

修改原型对象的属性,对现有实例的影响取决于修改方式和属性类型,不是“全有”或“全无”,而是分情况生效。
值类型属性被直接赋值时,只影响新实例
如果原型上原本有 age: 20(数值),你执行 Person.prototype.age = 25,所有**已创建的实例**会立即读到新值——因为它们没在自身定义 age,每次访问都实时查原型。
但如果某个实例之前已自行设置过 person1.age = 18,那它就拥有了自有属性,之后再改原型上的 age,对它完全无效。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
引用类型属性内部变化,会影响所有实例
原型上有 address: { city: '成都' },你执行 person1.address.city = '德阳':
- 所有实例(包括
person1、person2)调用address.city都会返回 '德阳' - 因为改的是同一个对象的属性,不是替换整个
address
引用类型属性被整体替换,只影响后续访问行为
若你执行 person1.address = { city: '巴中' }:
-
person1自身新增了address属性,指向新对象;之后它的address.city不再走原型 -
person2和person3仍使用原型上的address,不受影响 - 注意:这不是“破坏继承”,而是实例优先用自己的属性
重写整个 prototype 对象,对已有实例基本无效
比如先创建 const p1 = new Person(),再执行 Person.prototype = { sayHi() {} }:
-
p1.__proto__仍指向旧的原型对象,不会自动更新 -
p1.sayHi()会报错(除非旧原型也有该方法) - 只有之后新建的实例才用新原型
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










