提问人:xxxhomie21 提问时间:8/5/2022 最后编辑:DecPKxxxhomie21 更新时间:8/6/2022 访问量:41
js通用函数,用于计算和赋值对象值?
js common function which calculates and assign to object values?
问:
我试图实现的目标的例子
我想在 react 中创建一个对象,它将使用此函数和“this”关键字从其他键中计算一个键值,以便我可以将此函数与许多输入字段对象动态地一起使用。
func = function (c) {
return this.a + this.b + c;
};
obj1 = {
a: 1,
b: 2,
value: func(5),
};
obj2 = [
{ a: 2, b: 3, value: func(6) },
{
a: 4,
b: 5,
value: func(7),
},
];
// expected result
console.log(obj1.value); // 8
console.log(obj2[0].value); // 16
答:
-1赞
Konrad
8/5/2022
#1
目前被调用,设置为 object,因为要在其中使用它的对象尚不存在。func
this
window
您可以尝试从func
const func = function(c) {
return function() {
return this.a + this.b + c
}
}
const obj1 = {
a: 1,
b: 2,
value: func(5),
}
const obj2 = [{
a: 2,
b: 3,
value: func(6)
},
{
a: 4,
b: 5,
value: func(7)
}
]
// expected result
console.log(obj1.value()) // 8
console.log(obj2[0].value()) // 11
评论
0赞
xxxhomie21
8/5/2022
我认为这在运行时不起作用。
0赞
Konrad
8/5/2022
@xxxhomie21我不明白你的评论
0赞
xxxhomie21
8/5/2022
value 键不能是函数,它必须是函数的返回值。我将其作为字符串属性传递给文本组件。我不想在组件中调用它,因为它是一个通用组件。
0赞
Konrad
8/5/2022
没有类或代理就无法完成
0赞
xxxhomie21
8/5/2022
好的,谢谢,我想知道这是否可能。
0赞
Felix Kling
8/6/2022
#2
我想最简单的解决方案是将其翻转过来:将对象传递给函数,让它添加属性并返回完全相同的对象:
const func = function (obj, c) {
obj.value = obj.a + obj.b + c;
return obj;
};
const obj1 = func({
a: 1,
b: 2,
}, 5);
const obj2 = [
func({ a: 2, b: 3 }, 6),
func({
a: 4,
b: 5,
}, 7),
];
// expected result
console.log(obj1.value); // 8
console.log(obj2[0].value); // 16
(不知道第二个例子会如何导致 16)
评论