我在一个博客上找到的以下代码片段,以避免if-else语句。此代码非常模块化,可以轻松扩展。但是我无法让它发挥作用。
CatModel.prototype.makeWords = function () {
console.log('inside catmodel')
this.setWord('meow')
this.sayIt()
}
DogModel.prototype.makeWords = function () {
console.log('inside dogmodel')
this.setWord('bark')
this.saySomething()
}
// somewhere else
var makeWords = function (type) {
var model = namespace[type + 'Model']
model.makeWords()
}
makeWords('cat')
答案 0 :(得分:2)
推测CatModel
和DogModel
函数在某处声明,setWord
和sayIt
也在prototype
对象上设置。
您需要将CatModel
和DogModel
放入对象中并从namespace
引用它(我建议不打电话给namespace
):
var namespace = {
CatModel: CatModel,
DogModel: DogModel
};
然后在创建实例时,使用new
(您始终使用new
和构造函数)。我还会将()
置于通话中,即使严格来说,如果您没有参数可以通过,我也会选择var makeWords = function (type) {
var model = new namespace[type + 'Model']()
// ---------^^^--------------------------^^
model.makeWords()
}
:
https://api.telegram.org/bot447278997:*******************************nZW0/setWebhook?url=https://example.com/webhookMethod