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、引数を渡しません。関数は 1 つを期待します (それ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 に答える