0

我正在尝试使用函数向我的 JS 对象添加“属性”:“值”,但遇到了麻烦。我希望你们中的一些人能提供帮助。

请允许我创建一个上下文...

这是我的对象,它自己驻留在我的文件“myobject.js”中:

var myObject = {
'12-25-2012' = '<p>Christmas</p>', 
'07-18-2013' = '<p>My Birthday</p>' 
};

现在我有了一些想要添加到对象的更多信息。我知道我可以通过在脚本标签或对象下方的 myobject.js 文件中插入以下内容来做到这一点,如下所示:

var theDate = '07-23-2013'; 
myObject[theDate] = "<p>Mom's Birthday</p>";

但这不是我希望它发生的方式。为了这个上下文,我想用一个我们命名为 myFunction() 的函数添加这个完全相同的信息。原因是,在应用程序中,我希望能够将参数传递给将定义对象的新属性和值的函数。

这是我尝试过的,但不起作用:

function myFunction(){
var theDate = '07-23-2013'; 
myObject[theDate] = "<p>Mom's Birthday</p>";
}

关于出了什么问题的任何想法?非常感谢您的帮助!

4

2 回答 2

1

您的 JSON 格式有错误。分隔符 is:和 not =

下面是创建对象的示例。第一次myObject['07-23-2013']访问它是undefined.

第二次存在是因为myFunction()已被调用。

JSFiddle:http: //jsfiddle.net/KuFKU/

例子:

  var myObject = {
    '12-25-2012':'<p>Christmas</p>', 
    '07-18-2013':'<p>My Birthday</p>' 
};

alert("This exists:"+myObject['12-25-2012']);
alert("This is undefined:"+myObject['07-23-2013']);

myFunction();

alert("This is now defined:"+myObject['07-23-2013']);

function myFunction(){
var theDate = '07-23-2013'; 
myObject[theDate] = "<p>Mom's Birthday</p>";
}
于 2013-07-15T17:59:59.760 回答
1

我不鼓励[]Object类型变量上使用括号。

此外,您必须使用符号在对象中定义属性/属性attribute : value,因此不使用等号

Object.defineProperty您可以使用( MDN ) 方法轻松实现您想要的:

JavaScript

var myObject = {
    '12-25-2012': '<p>Christmas</p>',
    '07-18-2013': '<p>My Birthday</p>'
};


function myFunction(attribute,value) {
    Object.defineProperty(myObject, attribute, {
        value: value,
        /* This lets you overwrite the value later */
        writable: true,
        /* This lets you see the attribute in the Object attributes/properties list and in the length too */
        enumerable: true,
    });
    return myObject;
}

/* Displaying the content of the Object */
console.dir(myFunction("07-23-2013","<p>Mom's Birthday</p>"));
alert(JSON.stringify(myObject,null,4));

所以你这样调用函数:myFunction(TheDate, TheValue);

现场演示

于 2013-07-15T18:03:29.810 回答