回答
访问成员.
性质被称为点符号。使用[]
访问它们被称为括号表示法。
点符号仅与有效identifier names[spec]属性名的作品,所以基本上,这也将是一个有效的变量名(有效标识符,也看到What characters are valid for JavaScript variable names?)任何名义和任何reserved keyword [spec]。括号表示期望表达式可以计算为一个字符串(或可以强制为一个字符串),因此可以使用任意字符序列作为属性名称。字符串可以包含的内容没有限制。
实例:
obj.foo; // valid
obj.else // valid, reserved keywords are valid identifier names
obj.42 // invalid, identifier names cannot start with numbers
obj.3foo // invalid, ""
obj.foo-bar // invalid, `-` is not allowed in identifier names
obj[42] // valid, 42 will be coerced to "42"
obj["--"] // valid, any character sequence is allowed
obj[bar] // valid, will evaluate the variable `bar` and
// use its value as property name
使用括号标记:
- 当属性名称包含在一个变量,例如
obj[foo]
。 - 属性名称包含标识符中不允许使用的字符,例如或者包含空格或破折号(
-
),例如数字†,或者包含空格或破折号(-
),例如,obj["my property"]
。
使用点符号:在所有其他情况下。
虽然有关于保留关键字的注意事项。尽管规范允许将它们用作属性名称和点符号,但并非所有的浏览器或工具都尊重它(特别是较早的IE版本)。因此,我认为最好的解决方案是避免使用保留关键字来表示属性名称,或者如果不能使用括号表示法。
†:这也是为什么您只能使用括号表示法访问数组元素的原因。标识符不能以数字开头,因此不能只包含数字。
作为你说标识符名称不能用数字开头,其他规则是什么,你可以申明或提供任何链接 –
我已经在答案中提供了一个链接。点击“标识符名称”。 –
另请参见http://stackoverflow.com/questions/1661197/valid-characters-for-javascript-variable-names。 –
你应该使用.
当你知道属性
var object = {};
object.property = 'whatever';
的名字,当属性的名称包含在一个变量
var object = {};
var property = 'another-property';
object[property] = 'whatever';
由于@DCoder添加的某些对象使用[]
如果不使用[]
表示法,则不能访问属性,因为它们的名称会破坏语法。例如。命名class
,default
,或数据 - 丙值
另外为什么不呢。运算符允许索引属性?我真的想要 充分的原因。谢谢。
好吧,如果这是可能的,考虑:
var a = 0.5;
您是指数量0.5
或访问次数的5
元素? 请参阅:
Number.prototype[5] = 3;
0[5] //3
0.5 // 0.5
如果您允许的语法0.5
等于0[5]
,那么你怎么知道你是什么意思?
然而,可以使用数字直接与对象常量:
var a = {
0: 3,
1: 5
};
两个点运算符和索引(括号符号)运算符被用来访问对象的属性。通常使用点运算符访问比较快,因为通过窗口访问变量的速度明显较慢。但是如果变量中有特殊字符 ,则不能使用点运算符,因为它会给出错误。对于这种情况,我们需要使用索引运算符并将变量名称作为字符串格式传递,表示未使用过的引号,否则会给出未定义的错误。 例如 -
var abc = {
font-size : "12px"
}
Using dot operator - abc.font-size; //it will give error (Incorrect)
Using index operator - abc["font-size"]; //12px (Correct)
- 1. javascript中的点符号和括号表示法的区别
- 2. 正则表达式中方括号和括号之间的区别是什么?
- 3. Objective-C中圆括号与方括号之间的区别
- 4. 剃刀中的()(括号)和{}(大括号)之间的区别
- 5. 在jsf中使用括号和没有括号的回调bean方法之间的区别?
- 6. Objective-c:通过点符号和方法使用属性之间的区别?
- 7. Oracle的加号(+)表示法和ansi JOIN表示法之间的区别?
- 8. 双方括号和单方括号之间的区别是什么[和[[以及等号=和==?
- 9. 在三角形条件下使用平方括号和圆括号时,使用平方括号和圆括号之间的区别是什么
- 10. 点和操作符表示法之间的区别Ruby
- 11. 'append()'和没有方括号的列表元素之间的区别
- 12. SQL语句中的反引号和方括号之间的区别是什么?
- 13. 使用和不使用泛型的方法之间的区别
- 14. 事件和方法之间的区别
- 15. getRootNav()和navCtrl()方法之间的区别
- 16. “__method__”和“方法”之间的区别
- 17. PrintWriter.printf和PrintWriter.format方法之间的区别
- 18. EventLog.WriteEntry和EventLog.WriteEvent方法之间的区别
- 19. doGet和doHead方法之间的区别
- 20. Map.put和Map.putAll方法之间的区别?
- 21. GET和POST方法之间的区别?
- 22. $ http.get和方法之间的区别:'GET'
- 23. F#:有括号和不带括号的类型之间的区别
- 24. HLSL纹理采样器中的尖括号和括号之间的区别
- 25. 带括号和不带括号的可变参数之间的区别
- 26. for循环C#中使用括号和不使用它之间的区别
- 27. 带和不带括号的程序之间的区别?
- 28. TypeScript - 导入...和导入{...}(带花括号)之间的区别
- 29. “require”中的parens和括号之间有什么区别?
- 30. 块定义 - 大括号和do-end之间的区别?
你是什么意思与“为什么不不”。运算符允许索引属性“? –