Все экземпляры объекта имеют свойство constructor
, которое указывает функцию, которая создает прототип объекта.
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object#Properties_2
Оператор in
смотрит на все свойства, включая унаследованные из них. Если вы хотите, чтобы увидеть свойства на самом объекте, вы можете использовать hasOwnProperty
:
var a = {};
"constructor" in a; // true
a.hasOwnProperty("constructor"); // false
Обратите внимание, что в то время как оператор in
видит "constructor"
, for (key in a)
цикл не будет. Это связано с тем, что свойство "constructor"
не перечислимо.
Очень хороший деконструкция. –