'Prototype'抛出TypeError:info未定义

时间:2013-01-06 16:28:55

标签: 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 '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

1 个答案:

答案 0 :(得分:6)

当您致电new Man()设置Dog原型时,您不会传递参数。该函数需要一个(这应该是info)。

我不确定如何纠正它,因为该代码中的设置没有多大意义。

编辑 - 也许只需让Man构造函数检查参数:

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