在以下示例中:
var tester = Object.create(null);
tester.forename = "Bob";
tester[function () { return "surname"; }] = "Jones";
javascript是否只是将函数定义转换为字符串以用作属性键?
答案 0 :(得分:3)
javascript是否只是将函数定义转换为字符串以用作属性键?
是。请注意,字符串不为"surname"
。实际上,到目前为止,还没有指定字符串将是什么,并且它因引擎而异。在某些引擎上,它将大致与源代码中的内容相同。但它是完全有效的(例如,在规范内)它是"dunno, some function"
。对于Function#toString
:
返回此对象的依赖于实现的String源代码表示形式。这个 表示法具有 FunctionDeclaration FunctionExpression , GeneratorDeclaration 的语法, GeneratorExpession , ClassDeclaration , ClassExpression , ArrowFunction , MethodDefinition 或 GeneratorMethod 取决于对象的实际特征。特别是使用和放置白色空间,线条 表示字符串中的终结符和分号是依赖于实现的。
(这是2014年1月的措辞。)
但这是下一个规范,但尚未最终确定,并且随着规范接近完成(特别是关于本机功能),可能会稍微改变一下。截至目前的规范,Function#toString
可以返回它喜欢的任何内容,并且不需要因功能而异。
答案 1 :(得分:2)