使用 PUSH 时不了解Node.js结果



我正在研究Alexa Skill lambda,并创建了小代码片段来说明我的问题:

exports.handler = function(event, context)
{
//CREATE A MODEL
var model1 = {"endpoints":[ ]};
//CREATE ANOTHER MODEL  
var model2 = {"endpointid": "stuff"};
//CREATE THE RESULT
var result = model1;
model2.endpointid="switch1";
result.endpoints.push(model2);
model2.endpointid="switch2";
result.endpoints.push(model2);
var  json = JSON.stringify(result);
context.succeed({json});
};

响应:

{
"json": "{"endpoints":[{"endpointid":"switch2"},{"endpointid":"switch2"}]}"
}

问题:为什么我得到两个相同的endpointid

这有效,但我并不觉得它那么优雅:

exports.handler = function(event, context)
{
//CREATE A MODEL
var model1 = {"endpoints":[ ]};
//CREATE ANOTHER MODEL  
var model2 = {"endpointid": "stuff"};
//CREATE THE RESULT
model1.endpoints.push(model2);
model1.endpoints.push(model2);
model1.endpoints[0]="switch1";
model1.endpoints[1]="switch2";
var  json = JSON.stringify(model1);
context.succeed({json});

响应:"json": "{\"endpoints\":[\"switch1\",\"switch2\"]}">

如果你是 JAVA 和 node 的新手,肯定有点难以理解.js:

exports.handler = function(event, context)
{
//CREATE A MODEL
var model1 = {"endpoints":[ ]};
//CREATE ANOTHER MODEL  
var model2 = {"endpointid": "stuff","friendly Name": "name"};
//CREATE THE RESULT

var  _copy1ofModel2 =JSON.parse (JSON.stringify (model2));
var  _copy2ofModel2 =JSON.parse (JSON.stringify (model2));
_copy1ofModel2.endpointid = "switch 1";
_copy2ofModel2.endpointid = "switch 2";
model1.endpoints.push(_copy1ofModel2);
model1.endpoints.push(_copy2ofModel2);

var  json = JSON.stringify(model1);
context.succeed({json});

};

响应: { "json": "{\"endpoints\":[{\"endpointid\":\"switch 1",\"friendly Name\":\"name\"},{\"endpointid\":\"switch 2\",\"friendly Name":\"name\"}]}"。

感谢eebbesen让我朝着正确的方向看。

最新更新