添加元素到Javascript对象不能使用JSON格式

Adding element to Javascript object does not work using JSON format

本文关键字:JSON 格式 不能 对象 元素 Javascript 添加      更新时间:2023-09-26

我创建了一个像这样的js对象:

var JSONObject = {};

和一个函数创建一个元素并将其添加到JSONObject:

function addShape(JSONObject, shapeStruct)
{
    var sh = "shape"+shapeStruct.id.toString();
    JSONObject.sh={
    "id": shapeStruct.id,
    "x1": shapeStruct.x1,
    "x2": shapeStruct.x2,
    "y1": shapeStruct.y1,
    "y2": shapeStruct.y2
    };
}

这个函数在一个单独的文件中。

我使用:

shapeId++;
singleShapeStruct = {"id":shapeId, "x1":oldX, "x2":correctedX, "y1":oldY, "y2":yCanvas};
addShape(JSONObject, singleShapeStruct);
alert(JSONObject.shape0.x1);

警报没有给出任何东西。

谢谢你的帮助

当你给JSONObject.sh赋值时,它不会使用变量sh。属性的名称将是"sh",而不是变量sh的值。

要使用变量命名属性,请使用括号语法:

JSONObject[sh] = ...

由于变量具有实际的键,因此需要使用括号符号而不是点符号作为成员操作符

function addShape(JSONObject, shapeStruct)
{
    var sh = "shape"+shapeStruct.id.toString();
    JSONObject[sh]={
    "id": shapeStruct.id,
    "x1": shapeStruct.x1,
    "x2": shapeStruct.x2,
    "y1": shapeStruct.y1,
    "y2": shapeStruct.y2
    };
}

这里的JSONObject不包含sh属性。

你必须将JSONObject .sh对象初始化为

JSONObject[sh] = 
{
    "id" : .....
    "x1" : .....
    .
}

使用方括号标记变量value作为名称(动态)..不是通过点运算符。点运算符需要初始化属性的静态名称