6

below is a simple samlple, i wanna display the object properties using for/in loop

var Object = { x:1, y:2, z:3 };
for (property in Object) {
  console.log(Object.property);
};

it shows undefined.

but if using console.log(Object[property]); it works, and shows 1 2 3

why i cannot use Object.property to display in for/in loop?

1
  • 5
    First, you would use Object[property]. Second, don't use "Object" as the variable's name - it's the object constructor, and may or may not mess up other things...**especially** if this code is in the global scope Commented Jun 11, 2013 at 16:52

1 Answer 1

7

This has to do with notation and syntax

Object.property will give you undefined because you're accessing the property with the name property.

If you have this object:

var o = {
    property: "value",
    value: "foo"
};

o.property; // "value"
o["property"]; // "value" (equivalent)
o.value; // "foo"
o["value"]; // "foo" (equivalent)
o[o.property]; // "foo" no other notation possible

So in:

var Object = { x:1, y:2, z:3 };
for (property in Object) {
  console.log(Object.property);
};

The value of property is "x", "y" and then "z". But Object.property is equivalent to Object["property"]. Whereas Object[property] gives you Object["x"] etc.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.