JavaScript

Вообщем вопрос такой, для тех кто не спит. window выше чем документ? Почему нельзя убрать document и оставить window?

Ведь window это вся страница целиком. И можно было б так поступить window.getElementById('vasia').innerHTML = 'John';
Конечно можно наверно убрать document вот так самостоятельно. var window = window.document или нет? Ну короче убрать document, оставить только window
Пробуй
Петр Козак
Петр Козак
53 016
Лучший ответ
window - глобальный объект, ему нельзя присвоить другое значение,
window = window.document ничего не делает.
____
1)

Object.assign(window, document)

Попытка присвоить все свойства из document в window,

TypeError: Cannot assign to read only property 'matches' of object '#'
____
2)

for (let key in document) {
  if (!(key in window)) {
    console.log( key, "done" );
    window[key] = document[key];
  }
}

// Присваивает большой список...

window.querySelector("body")
>> Uncaught TypeError: Illegal invocation at anonymous

querySelector("body")
>> Uncaught TypeError: Illegal invocation at anonymous

Значит у методов document есть защита от дурака, чтобы наверняка закрепить их к объекту document)
____
3)

for (let key in document) {
  if (!(key in window) && typeof document[key] == "function") {
    window[key] = function() {
      console.log(arguments);
      return document[key].apply(document, arguments);
    };
  }
}

// При вызове свойств из window, слово window можно пропустить.
querySelector("body");
>> Arguments ["body", callee: ƒ, Symbol(Symbol.iterator): ƒ]
>> body style=​"background-color:​ rgb(255, 255, 255)​;​">​…​/body>​

Работает!) Аминь.
За использование этого заклинания могут сжечь на костре.
____

Если лень писать document, будет лень и querySelectorAll. Для всех этих методов можно написать мини-библиотеку и таскать её с собой, из серии

window._o = {
  all: function(selector, root) {
    return (root || document).querySelectorAll(selector);
  },
  first: function(selector, root) {
    return (root || document).querySelector(selector);
  },
};

console.log( _o.first("body") );
console.log( _o.all("div") );

Или уж взять jQuery.
Алексей Кучер Увлекательно. Только до сих пор непонятно для чего разработчик сделал document . Если мог б всё в window запихнуть.
!(key in window) по поводу этого. Тут если ключ не в window, то по идее цикл не должен запустится. Вопросительный знак это отрицание. Что в твоём случае делает вопросительный знак?
Т. к. getElementById() является методом document
У Window нет метода getElementById()
У Window есть не только document, но и, например, history у которой есть свои методы и т. д.

P.s можно писать сразу document.getElementById('vasia').innerHTML = 'John';
Максим Мокшин
Максим Мокшин
17 671