Javascript属性键-函数

Javascript property key - function

本文关键字:函数 属性 Javascript      更新时间:2023-09-26

在以下示例中:

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

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

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

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

返回此对象的依赖于实现的String源代码表示。这表示具有FunctionDeclarationFunctionExpressionGeneratorDeclaration的语法,GeneratorExpessionClassDeclarationClassExpressionArrowFunctionMethodDefinition生成器方法取决于物体的实际特性。特别是白色空间的使用和放置,线条表示字符串中的字符串、终止符和分号取决于实现。

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

但这是下一个规范,它还不是最终规范,随着规范接近完成,可能会发生一些变化(尤其是关于本机函数)。根据目前的规范,Function#toString可以返回任何它喜欢的东西,并且它不需要因函数而异。

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

如果您尝试使用不同的类型,它将被强制转换为字符串。

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