3

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

从 ES2015 开始,由分配给对象属性的匿名函数表达式创建的函数采用该对象属性的名称。

所以我尝试了这段代码:

// dynamically named constructor function
this['Item'] = function(size) {
  this.size = size;
}
// the creation of new object of arbitrary name
let item = new this['Item']('small')
console.log(item);
console.log(this['Item'].name)

它有效:控制台截图 1

但是当我实际使用变量名时......

let clsName = 'Item';
// dynamically named constructor function
this[clsName] = function(size) {
  this.size = size;
}
// the creation of new object of arbitrary name
let item = new this[clsName]('small')
console.log(item);
console.log(this[clsName].name)

它表现得很奇怪:控制台截图 2

obj['string']任务本身对我来说不是问题,而是行为和obj[variableWithString]不同的事实。那么有人可以为我解释这种现象吗?第二个示例中的结果不应该与第一个示例中的结果相同吗?

4

0 回答 0