Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择原型以避免出现其他情况_Javascript_Oop_Inheritance_Prototype - Fatal编程技术网

Javascript 选择原型以避免出现其他情况

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

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

大概
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()
}