#javascript
#javascript
Вопрос:
Я изучаю Javascript в Codecademy, и я выполняю задачу, в которой я должен зарегистрировать вид (Homo sapiens) и возраст двух человек. Оно возвращает ошибку типа TypeError, тип ошибки, который я еще не видел. Ошибка заключается в:
TypeError: Cannot read property 'species' of undefined
Мой код:
function Person(name,age) {
this.name = name;
this.age = age;
this.species = "Homo Sapiens";
}
var sally = Person("Sally Bowles",39);
var holden = Person("Holden Caulfield",16);
console.log("sally's species is " sally.species " and she is " sally.age);
console.log("holden's species is " holden.species " and he is " holden.age);
Любая помощь или совет приветствуются
Ответ №1:
Вы должны использовать new
оператор для создания экземпляра типа объекта:
var sally = new Person('Sally Bowles', 39);
var holden = new Person('Holden Caulfield', 16);
console.log( sally.species, holden.species ); // "Homo Sapiens"
Ответ №2:
Вам не хватает new
ключевого слова, как указано VisioN. Что происходит, когда вы не указываете new
:
Попробуйте войти this
внутрь Person
.
function Person(name,age) {
this.name = name;
this.age = age;
this.species = "Homo Sapiens";
console.log(this);
}
var sally = Person(«Салли Боулз»,39);
var holden = новый человек («Холден Колфилд», 16);
//Журналы:
Window {top: Окно, window: Окно, location: Местоположение, external: объект, chrome: объект…} Человек {имя: «Холден Колфилд», возраст: 16, вид: «Homo Sapiens»}
В первом вызове для Sally Bowles
new
не указано, поэтому Person
вызывается как обычная функция JavaScript и, следовательно, this
имеет значение window
.
Принимая во внимание, что во втором вызове для Holden Caulfield
new указано, поэтому Person
вызывается как constructor
функция и, следовательно this
, устанавливается на ваш новый объект.