Я изучаю наследование javascript в первый раз, и, похоже, я не могу заставить его работать, или, может быть, я не понимаю его правильно. Поэтому у меня есть некоторый код здесь, давайте посмотрим на нее:Как реализовать наследование javascript
<script language="javascript" type="text/javascript">
//object and prototype
function cat(name){//object constructor
this.name = name;//property
this.talk = function(){//method
console.log(this.name + " say meeow");
}
}
cat1 = new cat("Cat 1 Felix")
cat1.talk();
cat2 = new cat("cat 2 Joy")
cat2.talk()
//inheritance
function isleManCat(name){
cat.call(this,name)
this.feature = "no tail"
this.detail = function(){
console.log(this.name + " has " + this.feature);
}
}
isleManCat.prototype = new cat();
cat3 = new isleManCat("isle of Man cat")
cat3.talk();
cat3.detail();
</script>
Так что у меня 2 кошки объектов здесь и cat1 и CAT2 печатает ожидаемые результаты:
Cat 1 Felix say meeow
cat 2 Joy say meeow
. Тогда cat3 является isleOfMan() кошкой, которая должна унаследовать от кошки(), и я бы подумал, что это будет наследовать имущество имени от кошки(), но он печатает неопределенным:
undefined say meeow
undefined has no tail
Может кто-нибудь любезно дайте мне знать почему это не работает и что я делаю неправильно, потому что, похоже, я не понимаю этого? Благодаря
Какое имя вы ожидаете кота иметь? – Amit
Вы никогда не указали имя для своего 'isleManCat' для начала. – RainingChain
'isleManCat()' необходимо вызвать унаследованный конструктор. Есть тысячи руководств по наследованию в Javascript и сотни ответов здесь на ту же тему. Пожалуйста, прочитайте, а затем задайте гораздо более конкретный вопрос, когда вы застряли. Мы не являемся универсальной учебной службой, когда вы не проводили никаких исследований. Например, запустите [здесь] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain). – jfriend00