obj1 和 obj2 等等对象,都是历史遗留,对象里面属性名都是固定死的。对象属性名不同但是属性的用法都是一样的。
目前想封装一个 myNewModule 模块(先认为是函数,不一定是函数)能处理它们,但是能不能不用 options 参数来告知属性名,想改为一种在未来 debug 时更加容易理解的方式来告知 /注册。
const obj1 = {
  registerLabel: '张三',
  registerAge: 56,
  buyerCartList: []
  // ...还有十几个需要传入 myNewModule  模块的属性
}
const obj2 = {
  userLabel: '李四',
  userAge: 56,
  userCartList: []
  // ...还有十几个需要传入 myNewModule 模块的属性
}
myNewModule(obj1, {
  labelName: 'registerLabel',
  ageName: 'registerAge',
  cartListName: 'buyerCartList'
})
myNewModule(obj2, {
  labelName: 'userLabel',
  ageName: 'userAge',
  cartListName: 'userCartList'
})
// 模块开发中:
const myNewModule = (target, options) => {
  const label = target[options.labelName]
  const age = target[options.ageName]
  const cartList = target[options.cartListName]
  // ...处理 label age 等十多个属性
}
|  |      1sun2920989      2022-08-01 15:31:20 +08:00  1 要么外部处理 要么内部处理 脏活总要有人做 | 
|  |      2az22c OP function getObject (target) { if (target === obj1) { return { label: obj1.registerLabel, age: obj1.registerAge, cartList: obj1.buyerCartList, } } else if (target === obj2) { return { label: obj2.userLabel, age: obj2.userAge, cartList: obj2.userCartList, } } } | 
|  |      3az22c OP 打算在 myNewModule 里面,调用一次 getObject ,不论传入的是 obj1 还是 obj2 ,getObject 获取统一了属性名称的对象 |