Javascript ';原型&x27;抛出类型错误:信息未定义

Javascript ';原型&x27;抛出类型错误:信息未定义,javascript,jquery,prototype,Javascript,Jquery,Prototype,我正试图通过原型继承一个函数,看起来一切都是正确的(根据我),但我得到了错误。。。有人帮我理解这个问题吗 功能: (function($){ var Man = function(info){ this.name = info.name; this.age = info.age; this.work = info.work; } Man.prototype.tell = function(){ return

我正试图通过原型继承一个函数,看起来一切都是正确的(根据我),但我得到了错误。。。有人帮我理解这个问题吗

功能:

(function($){
    var Man = function(info){
        this.name = info.name;
        this.age = info.age;
        this.work = info.work;
    }

    Man.prototype.tell = function(){
        return 'I am Mr.' + this.name;
    }

    var Dog = function(info){
        Man.call(this,info);
    }

    Dog.prototype = new Man();

    var dog1 = new Dog({name:'Dobber',age:3,work:'roming'});
    console.log(dog1.tell());

})($);
我得到的错误是:

TypeError: info is undefined

当您调用
newman()
设置
Dog
原型时,您没有传递参数。函数需要一个(这就是
info
应该是的)

我不知道如何更正它,因为代码中的设置没有多大意义

编辑-可能只是让
Man
构造函数检查参数:

function Man(info) {
  if (info !== undefined) {
    this.name = info.name;
    this.age = info.age;
    this.work = info.work;
  }
}

当您调用
newman()
设置
Dog
原型时,您没有传递参数。函数需要一个(这就是
info
应该是的)

我不知道如何更正它,因为代码中的设置没有多大意义

编辑-可能只是让
Man
构造函数检查参数:

function Man(info) {
  if (info !== undefined) {
    this.name = info.name;
    this.age = info.age;
    this.work = info.work;
  }
}

if条件在这里到底做了什么?@3gwebtrain它只是检查一个参数是否真的传递给了函数。这样,当您通过调用“Man”而没有“info”参数来设置“Dog”原型时,不会出现异常。惯用的纠正方法是在设置继承时不调用构造函数。您可以使用
对象执行此操作。创建
,并在需要时添加垫片<代码>Dog.prototype=Object.create(人)@系统是,我同意;我试着处理其中的内容,但总的来说,我认为这不是一个真正好的方法。if条件在这里到底做了什么?@3gwebtrain它只是检查参数是否真的传递给了函数。这样,当您通过调用“Man”而没有“info”参数来设置“Dog”原型时,不会出现异常。惯用的纠正方法是在设置继承时不调用构造函数。您可以使用
对象执行此操作。创建
,并在需要时添加垫片<代码>Dog.prototype=Object.create(人)@系统是,我同意;我试着用现有的方法工作,但总的来说,我认为这不是一个真正好的方法。