Javascript对象和属性:添加&访问属性

Javascript Object and Properties: Adding & Accessing Properties

本文关键字:属性 访问 添加 Javascript 对象      更新时间:2023-09-26

当涉及到访问对象以及添加属性时,我想要一些澄清,我对Javascript完全陌生。

我有一个像这样的对象:

var device = { 
               dev1 : { "version" : "1.0", "name" : "AIR" },
               dev2 : { "version" : "1.0", "name" : "BEE" }
             }

当我做这两行时,有什么原因导致它出错吗?(我不使用浏览器,但运行纯Javascript作为一个应用程序。)

console.log( device.dev1['version'] ) returns undefined
console.log( device['dev1'].version ) returns undefined 

现在添加属性…我想使用字符串类型的属性键名。意思是我不想让它看起来像这样。它必须跟在我上面描述的对象后面,使用" "s。

     dev1 : { version : "1.0", name: "AIR" } 

是否有办法将属性名称定义为字符串?可以这样做吗?

var newKey = "health";
device['dev1'].newKey = newValue;

谢谢!

一旦我修复你的语法错误,你的代码工作正常:

var device = { 
  dev1 : { "version" : "1.0", "name" : "AIR" }, // added comma here
  dev2 : { "version" : "1.0", "name" : "BEE" }
};
console.log( device.dev1['version'] ); // 1.0
console.log( device['dev1'].version ); // 1.0
console.log( device.dev1.version );    // 1.0

属性名总是字符串。它们不可能是其他任何东西。如果属性名看起来不是字符串,那么它只是字符串的简写。

当属性名是变量中的字符串时,可以使用括号语法,用于获取和设置:

var newKey = 'someName';
var newValue = 'woot';
device.dev1[newKey] = newValue;
console.log(device.dev1[newKey]);  // woot
console.log(device.dev1.someName); // woot

因此,如果您提前知道属性名称,则简写的点属性语法obj.propNameobj['propName']相同。但是,如果您事先不知道属性名称,则必须使用括号语法。obj[propNameString]

你的dev1对象后面缺少一个逗号:

var device = { 
    dev1 : { "version" : "1.0", "name" : "AIR" },
    dev2 : { "version" : "1.0", "name" : "BEE" }
}

对于您关于添加键的问题,您可能希望使用点表示法,并为变量键名使用数组表示法:

var newKey = "health";
device.dev1[newKey] = newValue;

您错过了逗号(,)

var device = { 
    dev1 : { "version" : "1.0", "name" : "AIR" }, // <----
    dev2 : { "version" : "1.0", "name" : "BEE" }
};
var newKey = "health", newValue = 'newValue';
device.dev1.newKey = newValue; 
device['dev1']['newKey'] = newValue;

工作的例子。