0

我试图通过原型继承一​​个函数,似乎一切都是正确的(根据我),但我得到了错误......任何人帮助我理解这个问题?

功能:

(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
4

1 回答 1

6

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

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

编辑——也许只是让Man构造函数检查参数:

function Man(info) {
  if (info !== undefined) {
    this.name = info.name;
    this.age = info.age;
    this.work = info.work;
  }
}
于 2013-01-06T16:30:12.400 回答