我正在尝试使用函数向我的JS对象添加“属性”:“value”,但遇到了麻烦。我希望你们中的一些人能够提供帮助。
请允许我创建一个上下文...
这是我的对象,它自己驻留在我的文件“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>";
}
关于出了什么问题的任何想法?非常感谢帮助!!
答案 0 :(得分:1)
您的JSON格式有错误。分隔符为:
而不是=
。
下面是创建对象的示例。
第一次访问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>";
}
答案 1 :(得分:1)
我不鼓励在[]
类型变量上使用括号Object
。
此外,您必须使用attribute : value
表示法在对象中定义属性/属性,因此不会使用等号。
您可以使用{{3>}( MDN )方法轻松实现所需目标:
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);
Object.defineProperty