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(人)代码>@系统是,我同意;我试着用现有的方法工作,但总的来说,我认为这不是一个真正好的方法。