[英]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.