constructor
работает как конструктор
только в составе es6 класса.
А у вас тут это просто обычная функция, если вы ничего из нее не возвращаете, то она ничего и не вернет.
Т.е. вы создаете объект, присваиваете ему прототип Person и обращаетесь к свойству constructor этого объекта.
В объекте такого свойства нет, ищется в цепочке прототипов, находится и вызывается функция на которую указывает One.__proto__.constructor
А правильно будет так
class Person {
constructor(name,age) {
this.name=name;
this.age=age;
}
};
var One = new Person("Alex", 32);
другой вариант
var Person = {
constructor: function(name,age){
this.name=name;
this.age=age;
}
};
var One = Object.create(new Person.constructor("Alex", 32));
console.log(One.name);
но в этом случае One будет иметь прототипом не Person, а новый объект, созданный через Person.constructor