简体   繁体   中英

How to access properties of object by dot operator in Javascript

var changeJsonKeyName, newObj, obj;
changeJsonKeyName = function(json, oldName, newName) {
  json[newName] = json[oldName];
  delete json[oldName];
//    json.newName = json.oldName;
//    delete json.oldName;
    // if i use point in this ,i  can not get my result that i want   


  return json;
};
obj = {
  'aaa': '1111',
  'bb': {
    'cc': 333
  }
};
newObj = {};
newObj = changeJsonKeyName(obj, 'aaa', 'nnn');
console.log(newObj);

If I use point here ,I can not get my result that's what I want ,what is the wrong,please help me,thank you very much.

I'm not sure if I understood you correctly, but :

json[newName]

access property named with the value of newName variable

json.newName

access a property named 'newName', which does not exist

First, as a comment points out, this is a Javascript question, not a JSON question.

But you seem to be asking why this works:

 json[newName] = json[oldName];
 delete json[oldName];

but this doesn't:

 json.newName. = json.oldName.;
 delete json.oldName;

does not.

And the answer is the second form is actually equivalent to

 json["newName"] = json["oldName"];
 delete json["oldName"];

In other words, you are dealing with attributes whose names are the constants "oldName" and "newName" rather than attributes whose names are passed as parameters to that method.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM