如何使用函数将 属性 名称和值添加到 JavaScript 对象?
How to add a Property Name and Value to a JavaScript Object using a function?
var a = "the letter a";
var obj = {};
obj.brovo = "the letter b";
obj.charlie = "the letter c";
if (!obj.alpha) obj.alpha = a;
因为我希望在我的代码中的不同点使用它,并且会多次使用它,所以我希望它按如下方式使用:
isNotSet(obj.alpha, a);
我希望这等同于 obj.alpha = a;
我从以下函数开始:
function isNotSet (arg1, arg2) {
if (!arg1) arg1 = arg2;
return arg1;
}
我能够使用以下函数完成此操作:
isNotSet('alpha', a);
我只是将 arg1 作为 属性 名称,然后将其添加到对象,然后将值分配给具有 属性 名称的对象。
function isNotSet (arg1, arg2) {
if (!obj[arg1]) obj[arg1] = arg2;
}
解决方案真的只是一个简单的一行:
obj.alpha = obj.alpha || a;
如果你真的需要一个功能,你可以包装它:
function isNotSet(obj, arg1, arg2) {
obj[arg1] = obj[arg1] || arg2;
}
不过,您应该知道,如果 obj[arg1]
设置为 false
(或任何其他虚假值),此解决方案和您提出的解决方案都会覆盖该值。
如果您想正确处理这些值,最简单的方法是:
function isNotSet(obj, arg1, arg2) {
if(typeof obj[arg1] !== "undefined" && obj[arg1] !== null) { return; }
obj[arg1] = arg2;
}
var a = "the letter a";
var obj = {};
obj.brovo = "the letter b";
obj.charlie = "the letter c";
if (!obj.alpha) obj.alpha = a;
因为我希望在我的代码中的不同点使用它,并且会多次使用它,所以我希望它按如下方式使用:
isNotSet(obj.alpha, a);
我希望这等同于 obj.alpha = a;
我从以下函数开始:
function isNotSet (arg1, arg2) {
if (!arg1) arg1 = arg2;
return arg1;
}
我能够使用以下函数完成此操作:
isNotSet('alpha', a);
我只是将 arg1 作为 属性 名称,然后将其添加到对象,然后将值分配给具有 属性 名称的对象。
function isNotSet (arg1, arg2) {
if (!obj[arg1]) obj[arg1] = arg2;
}
解决方案真的只是一个简单的一行:
obj.alpha = obj.alpha || a;
如果你真的需要一个功能,你可以包装它:
function isNotSet(obj, arg1, arg2) {
obj[arg1] = obj[arg1] || arg2;
}
不过,您应该知道,如果 obj[arg1]
设置为 false
(或任何其他虚假值),此解决方案和您提出的解决方案都会覆盖该值。
如果您想正确处理这些值,最简单的方法是:
function isNotSet(obj, arg1, arg2) {
if(typeof obj[arg1] !== "undefined" && obj[arg1] !== null) { return; }
obj[arg1] = arg2;
}