如何使用函数将 属性 名称和值添加到 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;
}