Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular2-为什么不能在属性名称中使用破折号或其他特殊字符_Javascript_Angular_Angular2 Services - Fatal编程技术网

Javascript Angular2-为什么不能在属性名称中使用破折号或其他特殊字符

Javascript 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',

为什么我不能在这里使用dash

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变量不能有连字符(字符串访问器除外),因此它有助于解决此冲突