Javascript 为什么Firefox控制台只引用一些对象键?
我正在学习JavaScript中的计算属性。我列出了我最喜欢的棒球队的球员名单,并尝试使用对象文字。有些位置显示为字符串,有些则不是?有人对此有解释吗?我唯一的猜测是它与Mozilla控制台有关Javascript 为什么Firefox控制台只引用一些对象键?,javascript,html,css,Javascript,Html,Css,我正在学习JavaScript中的计算属性。我列出了我最喜欢的棒球队的球员名单,并尝试使用对象文字。有些位置显示为字符串,有些则不是?有人对此有解释吗?我唯一的猜测是它与Mozilla控制台有关 const position1 = "Pitcher"; const position2 = "Catcher"; const position3 = "First Base"; const position4 = "Second B
const position1 = "Pitcher";
const position2 = "Catcher";
const position3 = "First Base";
const position4 = "Second Base";
const position5 = "Third Base";
const position6 = "Shortstop";
const position7 = "Left Field";
const position8 = "Center Field";
const position9 = "Right Field";
const player1 = "Jacob deGrom";
const player2 = "Wilson Ramos";
const player3 = "Pete Alonso";
const player4 = "Robinson Cano";
const player5 = "Jeff Mcneil";
const player6 = "Amed Rosario";
const player7 = "JD Davis";
const player8 = "Brandon Nimmo";
const player9 = "Michael Conforto";
const team = {
[position1]: player1,
[position2]: player2,
[position3]: player3,
[position4]: player4,
[position5]: player5,
[position6]: player6,
[position7]: player7,
[position8]: player8,
[position9]: player9,
};
控制台输出如下:
Catcher: "Wilson Ramos"
"Center Field": "Brandon Nimmo"
"First Base": "Pete Alonso"
"Left Field": "JD Davis"
Pitcher: "Jacob deGrom"
"Right Field": "Michael Conforto"
"Second Base": "Robinson Cano"
Shortstop: "Amed Rosario"
"Third Base": "Jeff Mcneil"
<prototype>: Object { … }
捕手:“威尔逊·拉莫斯”
“中心场”:“布兰登·尼莫”
“一垒”:“皮特·阿隆索”
“左字段”:“JD Davis”
投手:“雅各布·德格罗姆”
“右栏”:“迈克尔·康弗托”
“二垒”:“罗宾逊·卡诺”
游击手:“阿迈德·罗萨里奥”
“三垒”:“杰夫·麦克尼尔”
:对象{…}
引号中显示的所有属性名称都是使用点表示法无效的属性名称,在您的示例中,这些属性名称都带有空格 例如,
obj.Catcher=“something”
是有效的,但obj.Center Field
会产生语法错误,并且只能使用方括号设置或访问此类属性,即obj[“Center Field”]
另请参见:引号中显示的所有属性名称都是使用点表示法无效的属性名称,在您的示例中,这些属性名称都带有空格 例如,
obj.Catcher=“something”
是有效的,但obj.Center Field
会产生语法错误,并且只能使用方括号设置或访问此类属性,即obj[“Center Field”]
另请参见:这只是一个实现细节。Firefox模仿了实际的文本对象语法,其中需要引用无效标识符的键:
var o={
一:一,,
“和二”:2
};
控制台日志(o)代码>这只是一个实现细节。Firefox模仿了实际的文本对象语法,其中需要引用无效标识符的键:
var o={
一:一,,
“和二”:2
};
控制台日志(o)代码>建立在hev1编写的基础上。在Javascript中,字符串根据其编写方式以不同的方式进行计算。传递给对象的变量将作为字符串计算。如果您向它传递一个数字,它也将作为字符串计算,除非它是布尔值、NaN值或空值。不能在字符串上使用.notation,也不能有空格。我确信这就是为什么camelCase是一个重要的命名约定。如果您想使用一个约定来访问团队对象中的值,请考虑将“第一个基础”写入“FrasBASE”或“FrestStBASE”。
console.log(Object.getPrototypeOf(team[“First Base”])console.log(Object.getPrototypeOf(team.Catcher))
希望这能有所帮助?以hev1所写的内容为基础。在Javascript中,字符串根据其编写方式以不同的方式进行计算。传递给对象的变量将作为字符串计算。如果您向它传递一个数字,它也将作为字符串计算,除非它是布尔值、NaN值或空值。不能在字符串上使用.notation,也不能有空格。我确信这就是为什么camelCase是一个重要的命名约定。如果您想使用一个约定来访问团队对象中的值,请考虑将“第一个基础”写入“FrasBASE”或“FrestStBASE”。
console.log(Object.getPrototypeOf(team[“First Base”])console.log(Object.getPrototypeOf(team.Catcher))
希望这有帮助?这正是控制台的工作方式。所有属性名称始终为字符串。控制台使用引号字符显示它们,以明确它们不是有效标识符,即使它们是有效的属性名称。(更正:现在属性名称也可以是符号实例,但这显然与此问题无关。)您注意到引号中的有空格,而其他的没有。这里有许多控制台实现。如果你创建一个可运行的代码段,你会看到堆栈溢出引用了所有键。这就是控制台的工作方式。所有属性名称始终为字符串。控制台使用引号字符显示它们,以明确它们不是有效标识符,即使它们是有效的属性名称。(更正:现在属性名称也可以是符号实例,但这显然与此问题无关。)您注意到引号中的有空格,而其他的没有。这里有许多控制台实现。如果您创建一个可运行的代码段,您将看到堆栈溢出的引号所有键。谢谢!完美的解释我都没听清楚空格谢谢!完美的解释我甚至没听清楚空格。