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

型変数に括弧を使用することはお勧めしません[]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 に答える
1

JSON形式にエラーがあります..delimiter is :and not =.

オブジェクトが作成される例の下。初回myObject['07-23-2013']アクセスですundefined

myFunction()2 回目は呼び出されたために存在します。

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 に答える