我是一名 JavaScript 学习者,想知道两者之间有什么区别
var obj1 = {
attribute1 : 1
};
var obj2 = {
"attribute1" : 1
};
console.log(obj1.attribute1);
console.log(obj2.attribute1);Run Code Online (Sandbox Code Playgroud)
两者都打印1。它们之间有很大的区别吗?
它们在您的情况下是等效的。
在内部,它们是相同的。
可能改变的是您使用代码访问它们的方式。
当使用字符串(带引号的属性)时,您实际上可以为属性使用更奇特的名称:
var obj3 = {
"attribute with space": 1,
"123AttributeStartingWithANumber": 1,
}
Run Code Online (Sandbox Code Playgroud)
在我的示例中,您无法通过语法访问这些属性名称obj1.attributeName(但您可以使用方括号符号 :obj1["attribute with space"]或obj1["123AttributeStartingWithANumber"].
这是因为“带空格的属性”或“123Attribute”在 JS 中不是有效的标识符。
请注意,在您的示例中,您还可以使用括号表示法:
console.log(obj1["attribute1"]);
console.log(obj2["attribute1"]);
Run Code Online (Sandbox Code Playgroud)
总之,引用deceze 的评论:
带引号的属性和括号表示法始终有效,不带引号的属性和
.点访问是当属性名称是有效标识符时的简写。
| 归档时间: |
|
| 查看次数: |
3517 次 |
| 最近记录: |