【问题标题】:Angular2 - why cant use dash or other special characters in property nameAngular2 - 为什么不能在属性名称中使用破折号或其他特殊字符
【发布时间】:2017-06-14 13:40:46
【问题描述】:

为什么我不能在这里使用破折号?

export class FizzService {
  getFizzes() : object[] {
    return[
      {
        iconClass: 'glyphicon glyphicon-search',
      },

所以在上面我不能使用

icon-class: 'glyphicon glyphicon-search',

我必须这样做:

iconClass: 'glyphicon glyphicon-search',

否则我会看到错误:

【问题讨论】:

  • 使用引号'icon-class': 'glyphicon glyphicon-search'
  • @yurzui 谢谢,这很有趣。你能解释一下为什么吗?或者只是发布一个答案,我很乐意接受它
  • 这是一个纯 JavaScript 问题。 - 是 JS 中的运算符,因此不能在标识符中使用。
  • 带有特殊字符(如@-)的Javascript 对象属性需要是字符串。要访问这些属性,您可以编写 object['icon-class'],因为 object.icon-class 不起作用。
  • 在 HTML 和 CSS id/class 名称中使用连字符是一般惯例(请参阅 Google 样式指南)。还可以防止 JavaScript 对象和全局/窗口属性中的 HTML 标记 id 之间的冲突。所有 HTML 元素 ID 都添加到 window 对象中,并且由于 JavaScript 变量不能有连字符(字符串访问器除外),它有助于解决这种冲突

标签: javascript angular angular2-services


【解决方案1】:

属性名称可以是字符串 ("foo") 或标识符 (foo)。

标识符也可用于变量。

标识符不能包含连字符,因为那是 减号 运算符。

amount-discount 表示“金额减去折扣”而不是“名称中带有连字符的变量”。

标识符也不能包含空格、+ 字符和许多其他字符。如果您希望属性名称包含特殊字符,请使用字符串。

【讨论】:

    【解决方案2】:

    这是因为对象的属性不应包含除下划线以外的任何特殊字符(例如:property_name)。

    如果您想在对象的属性中使用连字符,那么我们应该将属性放在引号中(例如:“property-name”)。

    请通过以下链接了解 javascript 中的命名约定。 http://javascript.crockford.com/code.html

    【讨论】:

      【解决方案3】:

      只需将带有特殊字符的属性名称用引号括起来,即:

      'ng-class':'glyphicon glyphicon-house'
      

      【讨论】:

        猜你喜欢
        • 2019-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多