3

I know we can create new properties in Javascript objects during runtime but could that property be assigned a value too? For example.

var value = "New value";

var table = new Object();

var newValue = table[value];

Now, I know that value table has a new property called "value". but does that "value key contains the information as " New Value". So, does that mean now table object is like following:

table = {
value:"New Value";
}
2
  • 2
    btw, object literal notation {} is way nicer than new Object() in almost any possible way. Commented Oct 3, 2011 at 17:49
  • Also, a semicolon (;) inside an object literal { ... } is invalid. Use commas (,) to separate properties INSIDE object literals. Commented Oct 3, 2011 at 17:51

3 Answers 3

5

You're confusing accessing with assigning.

// Assigns a variable named 'value' with a value of 'New Value'.
var value = "New value";
// Creates a variable named 'table' as a blank Object.
var table = new Object(); // Alternatively - table = {};
// Attempts to access "New Value" from object "table" which returns undefined.
var newValue = table[value];

If you want to assign properties to an object you do so like this:

// Assumes table is still an object.
table['key'] = 'value';

// Note that I almost _always_ opt for the variable['key'] notation over
// the variable.key notation because it allows you to use keys
// that would otherwise not be valid as identifiers.
table['Some Key'] = 'Some Value'; // This works.
table.Some Key = 'Some Value'; // This does not.

Later, when you want to retrieve that value and store it in a new variable, that's when you do this:

var newVariable = table['key'];

Hopefully that clarifies some. Please let me know if I can expand on any part of it.

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

Comments

3

no. your statement

var newValue = table[value];

is not setting anything, and since at the time when you created table you didn't assign any property, newValue will be undefined.

If you have a value variable that is assigned a value, and you want to assign that value to table under the key value, you want to do

table['value'] = value;

or alternatively

table.value = value

Comments

1

Erm, no, I don't think you've got it quite right.

All that does is assign undefined to newValue, because you're trying to access table's "New Value" property, which doesn't exist.

What I think you're trying to do is this:

var value = "New value";
var table = {};
table.value = value;

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.