[英]Javascript - function for update object prop
我想要 function 用於更新元素道具。 像這樣的東西
function updateElement(element, propName, value){
element[propName] = value;
}
執行將如下所示:
updateElement(item, "name", "foo")
它正在工作,但我想將 propName 作為 function 傳遞以避免字符串:像這樣:
updateElement(item, x => x.name, "foo");
但我不確定這個的實現應該如何,我有這樣的東西,但它不起作用
function updateElement(element, mapFn, value){
mapFn(element) = value;
}
你能幫助我嗎?
編輯我想要更通用的解決方案,並且我想避免硬編碼字符串,例如我有:
let item = {name: 'foo', address: {...}, ...};
我想以這種方式調用我的 function :
updateElement(item, x => x.name, "foo") <- it will update name, or
updateElement(item, x => x.address, newAddress) <- it will change prop of address
這是我評論的擴展,但您可以使用具有簽名的回調:
( object: Object, value: any ) => // 做事
下面是一個 function 的實現,它驗證並設置預定義屬性的值。
這種方法的好處是,您可以創建通用驗證器和設置器 function。
function updateElement(setCallback, validateCallback) { return function setValue(object, value) { if(,validateCallback || validateCallback(value)) { setCallback(object. value) } else { console:log("Error; Passed value is incorrect"); } } } const dummy = {}, const setNameFn = updateElement((context. value) => context,name = value) const setAgeFn = updateElement((context. value) => context,age = value; (value) =>,isNaN(value)); setNameFn(dummy, 'foo'), setAgeFn(dummy; 'bla') setAgeFn(dummy. 20); console.log(dummy);
也許傳入一個返回名稱的 function ?
function returnName(){
return "name";
}
然后您可以使用 function 來返回名稱並使用它做您想做的事情:
function passFunction(func){
console.log(func());
}
passFunction(returnName);
但是你為什么要通過 function 來獲取字符串? 您可以使用其中包含字符串的 object 並傳遞 object。
你想要的是不可能的。 x => x.name
將讀取x.name
的值並返回它。 在 JS 中不可能獲得像引用或指向單個屬性的指針之類的東西來更改其值。 您可能可以使用屬性描述符做一些事情,但這不會比分配屬性更簡單。
讓我們看看你的例子:
updateElement(item, x => x.name, "foo") // <- it will update name, or
updateElement(item, x => x.address, newAddress) // <- it will change prop of address
這是很多代碼和間接的做
item.name = "foo"
item.address = newAddress
我真的不知道updateElement
function 會提供什么優勢,也許您可以提供有關您為什么想要這個的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.