Я новичок в JavaScript, исходя из фона Java. Мне трудно понять следующее поведение.Javascript Object vs Function
console.log(Object.constructor.name); // prints Function.
console.log(Object instanceof Function); // prints true since Object's constructor is Function.
Это означает, что объект является экземпляром функции.
console.log(Function instanceof Object); // prints true
Как функция может быть экземпляром объекта, если объект является экземпляром Function?
Я запустил код в последнем браузере Chrome Chrome.
Потому что они оба встроены в [* Объекты *] (http://ecma-international.org/ecma-262/5.1/#sec-15.2), которые также являются [* конструкторами (функциями) *] (http : //ecma-international.org/ecma-262/5.1/#sec-15.3), и именно так ECMA-262 определяет их взаимосвязь. Окружающая среда только что установлена таким образом, одна из них не построена из другой. – RobG
'prints true, поскольку конструктор объекта - это функция' Это неточно. Он печатает true, потому что прототип объекта унаследован от прототипа Function: 'Object._proto__ === Функция .__ proto__ // true' Они являются обеими функциями. –
Почему вы хотите найти логику там, где это не так? Javascript имеет очень плохой тип системы проверки, вы можете использовать typeof и instanceof для тех же целей: проверка примитивных типов ... Иногда они несовместимы, например '1 экземпляр Number 'возвращает false и т. Д. – inf3rno