# Code adds key:property to global varible

**URL:** https://discourse.nodered.org/t/code-adds-key-property-to-global-varible/61707
**Category:** General
**Tags:** function-node
**Created:** [24 April 2022 07:15 UTC](https://discourse.nodered.org/t/code-adds-key-property-to-global-varible/61707 "2022-04-24T07:15:10Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![homeplayer](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/homeplayer/32/12388_2.png) [@homeplayer](https://discourse.nodered.org/u/homeplayer)
#### Post date: [24 April 2022 07:15 UTC](https://discourse.nodered.org/t/code-adds-key-property-to-global-varible/61707/1 "2022-04-24T07:15:10Z")

</div>

Please help me here why does obj.keys. --- item --- get created ?

```auto
const obj = global.get("glue." + msg.name + "." + msg.action); // msg.action toggle has run

for (var keys in obj) {
    msg = obj[keys];
    msg.item = keys;
    // obj.item is created in Glue
    delete obj[keys].item // I now have to delete it
    node.send(msg);
}
return null;

```

below part of the global variable glue.pushButton

```auto
{
    "toggle": {
        "BellButton": {
            "toggle": {
                "Buzzer": {
                    "handler": "buzzer",
                    "item": "Buzzer"
                },
                "BellRinger": {
                    "enabled": false,
                    "handler": "delay",
                    "timeOff": 200,
                    "item": "BellRinger"
                }
            }
        },
        "tester": {
            "pulse": {
                "Bell": {
                    "hendler": "delay",
                    "timeOff": 200
                }
            }
        }
    }
}

```

routine toggle has bin called hence toggle.BellButton.toggle.buzzer ---\> item:Buzzer is added to it

i am wondering why this happens?

EDIT; Thanks to [Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)

```auto
for (var keys in obj) {
    msg = RED.util.cloneMessage(obj[keys]);
    msg.item = keys;
    node.send(msg);
}

```

---

<div class="post-metadata">

### Author: ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)
#### Post date: [24 April 2022 07:24 UTC](https://discourse.nodered.org/t/code-adds-key-property-to-global-varible/61707/2 "2022-04-24T07:24:19Z")

</div>

> [@homeplayer](#):
>
> ```auto
> msg = obj[keys];
> msg.item = keys;
> // obj.item is created in Glue
> 
> ```

This is due to objects being copied by reference.

```javascript
    msg = obj[keys]; // This line says "point msg to the SAME memory location as obj[keys]
    msg.item = keys; // this line is essentially the same as obj[keys].item = keys 

```

try instead...

```javascript
const obj = global.get("glue." + msg.name + "." + msg.action); // msg.action toggle has run

for (var keys in obj) {
    msg.item = RED.util.cloneMessage(obj[keys]); 
    node.send(msg);
}

```

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)
#### Post date: [8 May 2022 07:24 UTC](https://discourse.nodered.org/t/code-adds-key-property-to-global-varible/61707/3 "2022-05-08T07:24:43Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
