gpt4 book ai didi

javascript - 移相器 : Instantiate class by string reference

转载 作者:行者123 更新时间:2023-11-29 23:26:42 24 4
gpt4 key购买 nike

我正在开发一个“管理器”,用于选择在某个地 block 上种植什么裁剪。每种裁剪都有完全不同的设计,因此有自己的类别/对象。但是,与其编写 >40 行来实例化该类,不如编写 1 行,其中只包含与类的确切名称匹配的字符串,然后运行它。这样我的代码就会保持干净。我尝试了一些东西,但从未设法完成。通常会导致以下错误:

TypeError: this.crop is not a constructor

我正在尝试运行的代码

export default class CropManager extends Phaser.Group {
constructor (game, className, plotId) {
super(game)
this.x = 0
this.y = 0
this.plotId = plotId

this.className = className
this.cropHandler(this.className)
}

// Defines which class to call

cropHandler (className) {
const ActualClass = 'plot' + className

this.cropclasses = { ActualClass: ActualClass}
this.crop = this.cropclasses[ActualClass]
this.classRun = new this.crop(this.game, this.x, this.y, this.plotId)

this.add(this.classRun)
}
}

注意每种裁剪的类名 = crop+cropname(cropCarrots、cropCows 等)

最佳答案

重新考虑在 this.cropclasses 中存储键值对的方式。现在完成的方式是,它将 'ActualClass' 作为键和 'plotNameOfTheClass'(或任何 'plot' + className 产生) 作为值,因此,当稍后作为数组访问它时,this.crop 未定义,因为 map 中没有 'plotNameOfTheClass' 键。

关于javascript - 移相器 : Instantiate class by string reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48908357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com