簡體   English   中英

如何動態選擇要添加屬性的對象-js

[英]How to dynamically select an object to a add property - js

我有兩個對象。 我想向它們添加新屬性,但是我想首先選擇要使用的對象。 這是所需的邏輯:

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 {}
}

我不熟悉打字稿,但是我得到了想要的結果

檢查這個小提琴

碼:

let Person = {}

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


 AddNewPropTo(Person,'Age'); 
 console.log(getProps(Person)) ; //returns ['Age']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM