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”
。