Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与动态命名构造函数的对象属性访问器中的括号表示法不一致。有什么解释吗?_Javascript_Console.log_Square Bracket_Dynamic Function_Object Property - Fatal编程技术网

Javascript 与动态命名构造函数的对象属性访问器中的括号表示法不一致。有什么解释吗?

Javascript 与动态命名构造函数的对象属性访问器中的括号表示法不一致。有什么解释吗?,javascript,console.log,square-bracket,dynamic-function,object-property,Javascript,Console.log,Square Bracket,Dynamic Function,Object Property,我想通过动态命名的匿名函数动态创建动态命名类的对象(对不起,我习惯称它们为类)。在我发现 从ES2015开始,由匿名函数表达式创建的函数 指定给对象特性的对象采用该对象特性的名称 所以我尝试了以下代码: //动态命名的构造函数 此['Item']=函数(大小){ 这个。大小=大小; } //创建任意名称的新对象 让item=newthis['item']('small') 控制台日志(项目); console.log(这个['Item'].name)你引用的句子有点误导,而是当您在属性中使用函

我想通过动态命名的匿名函数动态创建动态命名类的对象(对不起,我习惯称它们为类)。在我发现

从ES2015开始,由匿名函数表达式创建的函数 指定给对象特性的对象采用该对象特性的名称

所以我尝试了以下代码:

//动态命名的构造函数
此['Item']=函数(大小){
这个。大小=大小;
}
//创建任意名称的新对象
让item=newthis['item']('small')
控制台日志(项目);

console.log(这个['Item'].name)
你引用的句子有点误导,而是当您在属性中使用函数声明对象文字时。您可以执行
console.log(此[clsName].name)
(第一个示例也是如此)吗?在第一个示例中,它似乎只是一个调试辅助工具,而不是规范规定的类的实际
.name
。调试辅助工具(由特定引擎和devtools提供)可能只支持静态属性名,而不支持计算属性名。@Bergi,
console.log(此[clsName].name)
在两种情况下都输出空字符串。这是最新的Chrome开发工具。因此,您认为这两种情况下都应该像第二个屏幕截图一样,但是DevTools试图在第一个屏幕截图中有所帮助,但在第二个屏幕截图中却没有。是的,在这两种情况下,
.name
的预期结果都是空字符串(请参见链接问题)。Devtools(总是)试图提供帮助,有时还会为函数派生其他名称。显然,它只在分配给常量标识符时才会这样做,尽管-
this.Item=…
在调试器中也应该有一个名称。请注意,名称的派生机制会随着引擎版本的变化而不断变化(试图变得更有用),这一点您不必担心。