свойства обьекта 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, время: 21:36. |