Javascript Angular2-为什么不能在属性名称中使用破折号或其他特殊字符
为什么我不能在这里使用dashJavascript Angular2-为什么不能在属性名称中使用破折号或其他特殊字符,javascript,angular,angular2-services,Javascript,Angular,Angular2 Services,为什么我不能在这里使用dash export class FizzService { getFizzes() : object[] { return[ { iconClass: 'glyphicon glyphicon-search', }, 所以在上面我不能用 icon-class: 'glyphicon glyphicon-search', 我必须做: iconClass: 'glyphicon glyphicon-search',
export class FizzService {
getFizzes() : object[] {
return[
{
iconClass: 'glyphicon glyphicon-search',
},
所以在上面我不能用
icon-class: 'glyphicon glyphicon-search',
我必须做:
iconClass: 'glyphicon glyphicon-search',
否则我会看到错误:
属性名称可以是字符串(
“foo”
)或标识符(foo
)
标识符也可用于变量
标识符不能包含连字符,因为它是减号运算符
金额折扣
表示“金额减去折扣”,而不是“名称中带连字符的变量”
标识符不能包含空格、
+
字符和大量其他字符。如果希望属性名称包含特殊字符,请使用字符串。这是因为对象的属性不应包含除下划线以外的任何特殊字符(例如:属性名称)
如果您想在对象的属性中使用连字符,那么我们应该将属性放在引号中(例如:“属性名称”)
请通过以下链接了解javascript中的命名约定。
只需在属性名称周围加上引号,并使用特殊字符,即:
'ng-class':'glyphicon glyphicon-house'
使用引号
'icon-class':'glyphicon glyphicon search'
@yurzui谢谢,这很有趣。你能解释一下原因吗?或者只是发布一个答案,我会欣然接受这是一个纯JavaScript的问题-
是JS中的运算符,因此不能在标识符中使用。带有特殊字符(如@
或-
)的Javascript对象属性需要是字符串。要访问这些属性,您需要将对象['icon-class']
编写为对象。icon-class
不起作用。在HTML和CSS id/类名中使用连字符是一种常规(请参阅谷歌风格指南)。还可以防止全局/窗口属性中JavaScript对象和HTML标记id之间的冲突。所有HTML元素ID都添加到窗口对象中,由于JavaScript变量不能有连字符(字符串访问器除外),因此它有助于解决此冲突