gpt4 book ai didi

javascript - 选择原型(prototype)以避免 if-else

转载 作者:行者123 更新时间:2023-12-01 02:26:56 27 4
gpt4 key购买 nike

下面的代码片段是我在一个博客上找到的,以避免 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')

最佳答案

大概 CatModelDogModel 函数在某处声明,并且 setWordsayIt 也在其上设置原型(prototype)对象。

您需要将 CatModelDogModel 放入一个对象中,并从 namespace 引用它(我建议调用命名空间):

var namespace = {
CatModel: CatModel,
DogModel: DogModel
};

然后在创建实例时,使用new(您始终将new与构造函数一起使用)。我还将 () 放在调用中,尽管严格来说,如果您没有要传递的参数,它们是可选的:

var makeWords = function (type) {
var model = new namespace[type + 'Model']()
// ---------^^^--------------------------^^
model.makeWords()
}

关于javascript - 选择原型(prototype)以避免 if-else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703859/

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