Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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对象实例(又称“关联数组”)?_Javascript_Object_Static_Variable Declaration - Fatal编程技术网

如何静态声明属性名(又称键)包含破折号的Javascript对象实例(又称“关联数组”)?

如何静态声明属性名(又称键)包含破折号的Javascript对象实例(又称“关联数组”)?,javascript,object,static,variable-declaration,Javascript,Object,Static,Variable Declaration,我想静态地声明一个属性名(“键”)包含破折号的Javascript对象(有时被称为“关联数组”) 无破折号(工程): 带破折号(导致语法错误): (是的,我完全知道这些属性包含破折号,但这完全是另一回事,我这里只讨论这些对象的静态声明。)您必须将属性名称括在引号中,才能将“field-1”作为字符串读取 var myObject = {"field-1":"aaa", "field-2":"bbb"} console.log(myObject["field-1"], myObject["fiel

我想静态地声明一个属性名(“键”)包含破折号的Javascript对象(有时被称为“关联数组”)

无破折号(工程):

带破折号(导致语法错误):


(是的,我完全知道这些属性包含破折号,但这完全是另一回事,我这里只讨论这些对象的静态声明。)

您必须将属性名称括在引号中,才能将“field-1”作为字符串读取

var myObject = {"field-1":"aaa", "field-2":"bbb"}
console.log(myObject["field-1"], myObject["field-2"])

//computed properties
var name1 = "field-1"
var name2 = "field-2"

var myObject = {
     [name1]: "aaa",
     [name2]: "bbb"
}

console.log(myObject["field-1"], myObject["field-2"])

必须将属性名称括在引号中才能将“field-1”作为字符串读取

var myObject = {"field-1":"aaa", "field-2":"bbb"}
console.log(myObject["field-1"], myObject["field-2"])

//computed properties
var name1 = "field-1"
var name2 = "field-2"

var myObject = {
     [name1]: "aaa",
     [name2]: "bbb"
}

console.log(myObject["field-1"], myObject["field-2"])

在对象文字中,可以通过四种方式定义属性名称:

  • 作为(
    foo
  • 作为数字文字(
    42
  • 作为字符串文本(
    'foo bar'
  • 作为计算属性(
    [foo+'bar']
field-1
不是这两个字段。它不是标识符,因为字符
-
在标识符名称中无效。相对容易知道某个东西是否是有效的标识符名称:如果它不是关键字,也不是有效的变量名称,那么它就不是有效的标识符名称。也就是说,因为声明变量是无效的

var field-1 = 42;
您也不能在对象文本中使用它

您必须改用字符串文字。字符串文字可以包含任何字符序列:

myObject = {'field-1':"aaa"};

在对象文字中,可以通过四种方式定义属性名称:

  • 作为(
    foo
  • 作为数字文字(
    42
  • 作为字符串文本(
    'foo bar'
  • 作为计算属性(
    [foo+'bar']
field-1
不是这两个字段。它不是标识符,因为字符
-
在标识符名称中无效。相对容易知道某个东西是否是有效的标识符名称:如果它不是关键字,也不是有效的变量名称,那么它就不是有效的标识符名称。也就是说,因为声明变量是无效的

var field-1 = 42;
您也不能在对象文本中使用它

您必须改用字符串文字。字符串文字可以包含任何字符序列:

myObject = {'field-1':"aaa"};

相关:仅供参考,它被称为括号表示法和点表示法(表示法与数组无关)。不,这实际上比你想象的更密切相关。如果属性名称不是有效的标识符名称,则必须使用括号表示法+字符串文字。与对象文字类似,如果属性名称不是有效的标识符名称,则必须使用字符串文字。同样的原因,同样的解决方案。相关:仅供参考,它被称为括号表示法和点表示法(表示法与数组无关)。不,这实际上比你想象的更密切相关。如果属性名称不是有效的标识符名称,则必须使用括号表示法+字符串文字。与对象文字类似,如果属性名称不是有效的标识符名称,则必须使用字符串文字。同样的原因,同样的解决方案。请详细说明原因。非常好,谢谢!(请在“computed properties”示例代码中将“bbbb”改为“bbb”,以保持一致性并避免不必要的混淆)请详细说明原因。非常好,谢谢!(请将“计算属性”示例代码中的“bbbb”改为“bbb”,以保持一致性并避免不必要的混淆)