Javascript 选择原型以避免出现其他情况
下面是我在一个博客上找到的避免if-else语句的代码片段。这段代码是非常模块化的,很容易扩展。但我没办法让它工作Javascript 选择原型以避免出现其他情况,javascript,oop,inheritance,prototype,Javascript,Oop,Inheritance,Prototype,下面是我在一个博客上找到的避免if-else语句的代码片段。这段代码是非常模块化的,很容易扩展。但我没办法让它工作 CatModel.prototype.makeWords = function () { console.log('inside catmodel') this.setWord('meow') this.sayIt() } DogModel.prototype.makeWords = function () { console.log('insi
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')
大概
CatModel
和DogModel
函数在某处声明,并且setWord
和sayIt
也在其原型
对象上设置
您需要将CatModel
和DogModel
放在一个对象中,并从名称空间
引用它(我建议不要调用名称空间
):
然后在创建实例时,使用new
(您总是将new
与构造函数一起使用)。我还将()
放在调用中,即使严格来说,如果您没有要传递的参数,它们是可选的:
var makeWords = function (type) {
var model = new namespace[type + 'Model']()
// ---------^^^--------------------------^^
model.makeWords()
}
大概
CatModel
和DogModel
函数在某处声明,并且setWord
和sayIt
也在其原型
对象上设置
您需要将CatModel
和DogModel
放在一个对象中,并从名称空间
引用它(我建议不要调用名称空间
):
然后在创建实例时,使用new
(您总是将new
与构造函数一起使用)。我还将()
放在调用中,即使严格来说,如果您没有要传递的参数,它们是可选的:
var makeWords = function (type) {
var model = new namespace[type + 'Model']()
// ---------^^^--------------------------^^
model.makeWords()
}