свойства обьекта Window
С Наступающим! Перед Новым Годом решил повозиться со свойствами обьекта window. Так вот проблемка в том что при переборе свойств
for(var key in window){console.log(key);}в консоли нету например Array. хотя если проверить есть ли он в обьекте if('Array' in window)выдаст true... Поясните этот момент пожалуйста... |
Большинство свойств встроенных объектов javascript перебираться в цикле for..in не будут, так как помечены специальным внутренним флагом DontEnum.
Этот флаг нельзя получить или поменять. <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>ГГ</title> <style> </style> </head> <body> <div id="myid"></div> <script> for(var key in window){console.log(key);} console.log('Array' in window); console.log('myid' in window); </script> <!-- <script src="http://localhost:35729/livereload.js"></script> --> </body> </html> |
DynkanMaclaud,
Это скорей всего потому что свойство enumerable стоит false . enumerable — если true, то свойство просматривается в цикле for..in и методе Object.keys(). По умолчанию false. https://learn.javascript.ru/descriptors-getters-setters |
Потому что у встроенных объектов enumerable по умолчанию false.
Object.defineProperty(window, 'Array', { get: function() { return [].constructor; }, enumerable: true }); for(var i in window) { if(i == 'Array') { console.log(true); } } |
Часовой пояс GMT +3, время: 01:47. |