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 等十多个属性
}
1
sun2920989 2022-08-01 15:31:20 +08:00 1
要么外部处理 要么内部处理 脏活总要有人做
|
2
az22c 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, } } } |
3
az22c OP 打算在 myNewModule 里面,调用一次 getObject ,不论传入的是 obj1 还是 obj2 ,getObject 获取统一了属性名称的对象
|