javascript - 如何动态选择一个对象来添加属性 - js

标签 javascript typescript

我有两个对象。我想向它们添加新属性,但我想首先选择要使用的对象。这是所需的逻辑:

let myFn = (function() {

    // The Two Objects
    let university = {}
    let Person = {}

    let AddNewPropTo = ( objName , new_objProp ) => {
         return objName[new_objProp] = null;  // logic fail 1
    }
    let getProps = (objName) => {
       return Object.getOwnPropertyNames(objName)
    }

    return {
       AddNewPropTo,
       getProps
    }

})();

     myFn.AddNewPropTo('Person','Age'); // logic fail 2
     myFn.getProps(Person) // Desired Output : Person = { Age : null }

最佳答案

逻辑失败 1 处的错误消息告诉您,您正在尝试将属性添加到字符串 objName 而不是对象。
所以你需要选择你的对象之一,

let AddNewPropTo = ( objName , new_objProp ) => {
  if (objName === 'Person') {
    Person[new_objProp] = null
    return Person
  }
  if (objName === 'university') {
    university[new_objProp] = null
    return university
  } 
}

第二个逻辑失败看起来像是一个非常基本的错误,返回值未被捕获

const Person = myFn.AddNewPropTo('Person','Age'); // logic fail 2
const props = myFn.getProps(Person) // Desired Output : Person = { Age : null }
console.log(props)

如果你想变得更有活力,试试这个

let university = {}
let Person = {}
const map = {
  'Person': Person,
  'university': university
}

let AddNewPropTo = ( objName , new_objProp ) => {
  let obj = map[objName]
  if (obj) {
    obj[new_objProp] = null
    return obj
  }
  return {}
}

关于javascript - 如何动态选择一个对象来添加属性 - js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46921776/

相关文章:

javascript - NavigationEnd 的 url 属性返回未定义(Angular 6)

javascript - 使用 Jquery 按类和 ID 获取图像元素

javascript - Angularjs:在数组上映射 Angular 过滤器

javascript - 三个J合并多个 Material ,但是渲染不正确

javascript - Angular 应用程序以及国际化和本地化

TypeScript:接口(interface) vs 类 vs 模块 vs 程序 vs 函数

typescript - Angular 10 和 ES2020 中的模块解析因可选链而失败

javascript - 在 typescript 中的 sammy js 中声明路由

javascript - TypeScript 组织 : namespaces? 模块?困惑

javascript - jQuery 手机 : remember variable of page before