Javascript属性键-函数

Javascript属性键-函数,javascript,Javascript,在以下示例中: var tester = Object.create(null); tester.forename = "Bob"; tester[function () { return "surname"; }] = "Jones"; javascript只是将函数定义转换为字符串以用作属性键吗?是。对象的属性名称始终是字符串 如果您尝试使用其他类型,它将被强制转换为字符串 如果您想让它们成为其他类型,可以使用ES6。是。对象的属性名称始终是字符串 如果您尝试使用其他类型,它将被强制转换

在以下示例中:

var tester = Object.create(null);

tester.forename = "Bob";
tester[function () { return "surname"; }] = "Jones";

javascript只是将函数定义转换为字符串以用作属性键吗?

是。对象的属性名称始终是字符串

如果您尝试使用其他类型,它将被强制转换为字符串


如果您想让它们成为其他类型,可以使用ES6。

是。对象的属性名称始终是字符串

如果您尝试使用其他类型,它将被强制转换为字符串

如果希望它们是其他类型,可以使用ES6

javascript只是将函数定义转换为字符串以用作属性键吗

对。请注意,字符串将不是
“姓氏”
。事实上,到目前为止,还没有指定字符串是什么,而且它因引擎而异。在某些引擎上,它将大致与源代码中的内容相同。但是如果它是
“dunno,some function”
,那么它将是完全有效的(例如,在规范内)。下一个规范ES6可能会说,对于
函数#toString

返回此对象的实现相关字符串源代码表示形式。这 表示具有FunctionDeclaration FunctionExpression、GeneratorDeclaration、, GeneratorExpression、类声明、类表达式、箭头函数、方法定义或GeneratorMethod 取决于对象的实际特征。特别是使用和放置空格、线条 表示字符串中的终止符和分号取决于实现

(这是2014年1月的措辞。)

但这是下一个规范,它还不是最终的,并且可能会随着规范接近完成而有所改变(特别是关于本机函数)。在当前规范中,
Function#toString
可以返回它喜欢的任何东西,并且不需要根据函数的不同而有所不同

javascript只是将函数定义转换为字符串以用作属性键吗

对。请注意,字符串将不是
“姓氏”
。事实上,到目前为止,还没有指定字符串是什么,而且它因引擎而异。在某些引擎上,它将大致与源代码中的内容相同。但是如果它是
“dunno,some function”
,那么它将是完全有效的(例如,在规范内)。下一个规范ES6可能会说,对于
函数#toString

返回此对象的实现相关字符串源代码表示形式。这 表示具有FunctionDeclaration FunctionExpression、GeneratorDeclaration、, GeneratorExpression、类声明、类表达式、箭头函数、方法定义或GeneratorMethod 取决于对象的实际特征。特别是使用和放置空格、线条 表示字符串中的终止符和分号取决于实现

(这是2014年1月的措辞。)


但这是下一个规范,它还不是最终的,并且可能会随着规范接近完成而有所改变(特别是关于本机函数)。根据当前规范,
Function#toString
可以返回它喜欢的任何内容,并且它不需要根据函数的不同而变化。

我必须首先指定一个变量才能将表达式的结果用作属性key@MartyWallace:您正在使用表达式的结果作为属性键;目前,您的代码有一个函数表达式,它生成一个函数实例,然后隐式地强制为字符串。如果您的目标是调用函数,那么您需要一个调用表达式。下面是一个调用表达式,它调用一个由函数表达式定义的函数,并将其用作属性名(注意最后一个
}
后面的
()
):
tester[function(){return“name”;}()]=“Jones”
tester.name
设置为
“Jones”
。要将表达式的结果用作属性,必须先将变量赋值吗key@MartyWallace:您正在使用表达式的结果作为属性键;目前,您的代码有一个函数表达式,它生成一个函数实例,然后隐式地强制为字符串。如果您的目标是调用函数,那么您需要一个调用表达式。下面是一个调用表达式,它调用一个由函数表达式定义的函数,并将其用作属性名(注意最后一个
}
后面的
()
):
tester[function(){return“name”;}()]=“Jones”
tester.姓氏设置为
“Jones”