У меня есть класс 2: животное (родитель) и собака («ребенок» животного), , когда я создаю объект Animal, и пытаюсь предупредить имя животного, Я получил неопределенный, а не ее настоящее имя. Зачем? (жаль двойной пост)JavaScript - Наследование
function Animal(name, year){
alert(name);
this.name = name;
this.year = year;
this.age = function(){
var n = new Date().getFullYear();
return n - this.year;
};
}
function Dog(name, year, color, type) {
this.color = color;
this.type = type;
Animal.call(this, name, year);
//override method age of animal
this.age = function(){
var n = new Date().getFullYear();
return (n - this.year) * 7;
};
Dog.prototype.age();
}
Dog.prototype = new Animal();
(Это Js класс под названием: JsClass.js)
и в HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="JsClass.js"></script>
<script type="text/javascript">
var p1 = new Animal("rex",2008);
</script>
<title>Insert title here</title>
</head>
<body>
</body>
</html>
(с помощью Eclipse)
Спасибо !
Для справки обычно вы вызываете родительский конструктор перед установкой собственных полей, а не после. Однако не следует вызывать проблему, которую вы видите. – cHao
теперь я вижу, что если я удалю эту строку: Dog.prototype = new Animal(); Остерегайтесь названия животного. так в чем проблема с этой линией? где я должен это поставить? – user2097810