Если мы создаем объект с именем "a" из конструктора функции, то почему "a" не является экземпляром Function?

function person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}
var myFather = new person("John", "Doe", 50, "blue");
console.log(myFather instanceof person); //true
console.log(myFather instanceof Object); //true
console.log(myFather instanceof Function); //false

Здравствуйте, в этом случае мы создали объект из конструктора функции: 'person'.

Каждая функция в JavaScript является экземпляром конструктора Function. Почему myFather не является экземпляром Function?

1 ответ

Решение

myFather является экземпляром объекта person вот почему это возвращается для myFather instanceof Object но ложно для myFather instanceof Function поскольку это не функция, а объект, вы не можете снова вызвать myFather для создания экземпляра другого объекта. На самом деле person это экземпляр функции. Когда вы звоните new person простой объект возвращается и сохраняется в myFather.

function person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}
var myFather = new person("John", "Doe", 50, "blue");
console.log(myFather instanceof person); //true
console.log(myFather instanceof Object); //true
console.log(myFather instanceof Function); //false
console.log(person instanceof Function); //true

Другие вопросы по тегам