Javascript对象和属性:添加&访问属性
Javascript Object and Properties: Adding & Accessing Properties
当涉及到访问对象以及添加属性时,我想要一些澄清,我对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.propName
与obj['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;
工作的例子。
相关文章:
- JavaScript Pub/Sub属性访问问题
- AngularJS:如何用同一对象的另一个属性访问一个属性
- Ember JS属性访问器
- 对方法或属性访问的意外调用
- 对jQuery中IE8的方法或属性访问的意外调用
- 对方法或属性访问的意外调用.在JQUERY
- XDomainRequest onload上对方法或属性访问的意外调用
- Javascript属性访问速度:var.properties与var[“属性”]的区别
- 从函数属性访问对象属性;不适用于Firefox
- 重写内部 HTML 属性访问
- (仅在IE中)SCRIPT65535:对方法或属性访问的意外调用.主.js,第 152 行字符 28
- 使用表达式属性访问不同的模型模板选项
- jQuery mobile 1.1.0 滑块:JS-对象属性访问
- Ractive.js,通过命名属性访问父属性
- jQuery验证插件addMethod可以通过属性访问
- 如何使用动态属性访问对象
- 我无法通过 Firefox 中的“for”属性访问标签,但可以在 Chrome 中访问标签
- JavaScript 对象原型属性访问
- 使用虚拟属性访问猫鼬模型中的嵌套文档
- 是否可以在Javascript/Coffeescript中的属性访问期间自动调用函数调用