You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过修改全局变量同步更新所有关联对象的对应属性值

问题原因

字符串属于JavaScript基础数据类型,初始化car对象时只是将cartype的当前值*Fiat*拷贝给了car.type,二者后续是完全独立的变量,修改cartype不会自动同步到car.type。

可行实现方案

以下两种方案都不需要修改update函数的赋值逻辑,适配多对象共用cartype的场景:

方案1:将公共变量封装到引用类型对象中(推荐)

引用类型传递的是内存地址,所有关联对象都指向同一个配置地址,修改配置后所有引用方自动生效,后续扩展其他公共属性也非常方便:

// 公共配置对象(引用类型)
var config = {
  cartype: 'Fiat'
}

var car = {type: config, model:"500", color:"white"};
// 其他引用cartype的对象也可以直接关联config

function update(){
  config.cartype = 'Safari';
}

function show(){
  console.log(config.cartype);
  // 取值时从公共配置中取最新值即可
  document.getElementById("demo").innerHTML = car.type.cartype;
}

方案2:给对象属性设置getter访问器

每次读取car.type时都会实时获取最新的全局cartype值,不需要调整原有全局变量的定义逻辑:

var cartype = 'Fiat';

var car = {
  // 定义getter,每次读取type属性时返回当前全局cartype的最新值
  get type() {
    return cartype
  },
  model:"500", 
  color:"white"
};
// 其他需要关联cartype的对象也可以通过同样的方式定义getter

function update(){
  cartype = 'Safari';
}

function show(){
  console.log(cartype);
  // 直接访问type属性即可自动拿到最新值
  document.getElementById("demo").innerHTML = car.type;
}

以上两种方案都不需要修改原有HTML代码。

内容的提问来源于stack exchange,提问作者Raj Kamal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:45:01