0

重複の可能性:
動的オブジェクト プロパティ名

私はこのようなオブジェクトを持っています

var localAppConfig = {
    wallet:0,
    paySomeone:0,
    payBills:0,
    accounts:0,
    moveMoney:0,
    alerts:0,
    offers:0,
    checkIn:0
};

この内の特定の要素に値 1 を設定したいlocalAppConfig

どの要素を設定する必要があるかはjson、サーバーから届く - から取得されます。

たとえば、ウォレット、paySomeone、payBills、alerts、offers、checkIn の値を 1 に設定したい

これらは like から取得されjsonます

for(var i=0;i<len;i++){
        var name = list[i].handle;
        var accessor = eval('localAppConfig.'+name);
        eval('localAppConfig.'+name)=1;
    }

var name要素の名前が含まれており、その値に正しくアクセスできます。

javascript を使用して値を設定するにはどうすればよいですか?

試しaccessor=1ましたが、うまくいきません。

ありがとう :)

4

4 に答える 4

3

代わりにこれを行う必要があります。

var accessor = localAppConfig[name];
localAppConfig[name] = 1;
于 2012-08-08T15:21:41.003 に答える
3

とにかく:サイズのためにこれを試してください:

localAppConfig[name] = 1;//where name is a variable of choice, it's value will be used as the propertyname

そしてまた:

-評価ハンマーしかない場合、すべてが親指のように見えます。–Brendan Eich への対応: 関数の動的な作成には Function コンストラクターではなく eval() の使用を推奨する必要があります。

しかし、なぜプロパティのリストを使用するのでしょうか? ループを使用することもできますfor...in。あなたのようなオブジェクトの場合は、まったく問題ありません。
もチェックする限り.hasOwnProperty

for (var prop in localAppConfig)
{
    if (localAppConfig.hasOwnProperty(name))
    {
        //set, delete... do whatever
    }
}
于 2012-08-08T15:23:26.203 に答える
1

試すlocalAppConfig[name] = 1;

これは単なる JavaScript オブジェクトであり、使用する必要はありませんeval()

于 2012-08-08T15:23:10.283 に答える
0

使用しないでくださいeval()。オブジェクト内のその値のインデックスを参照することで、プロパティを追加できます。存在しない場合は作成され、存在しない場合は値が上書きされます。

代わりに次のことを試してください。

// localAppConfig[list[i].handle] = 1; 

for(var i=0;i<len;i++){         
    localAppConfig[list[i].handle] = 1;
} 

または、変数を別の場所で参照する場合は、次の値で変数を設定しますlist[i].handle

for(var i=0;i<len;i++){
    var name = list[i].handle;        
    var accessor = localAppConfig[name];    
    localAppConfig[name] = 1;
} 
于 2012-08-08T15:21:54.003 に答える