Ведь window это вся страница целиком. И можно было б так поступить window.getElementById('vasia').innerHTML = 'John';
Конечно можно наверно убрать document вот так самостоятельно. var window = window.document или нет? Ну короче убрать document, оставить только window
JavaScript
Вообщем вопрос такой, для тех кто не спит. window выше чем документ? Почему нельзя убрать document и оставить window?
Пробуй
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.
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.
Т. к. getElementById() является методом document
У Window нет метода getElementById()
У Window есть не только document, но и, например, history у которой есть свои методы и т. д.
P.s можно писать сразу document.getElementById('vasia').innerHTML = 'John';
У Window нет метода getElementById()
У Window есть не только document, но и, например, history у которой есть свои методы и т. д.
P.s можно писать сразу document.getElementById('vasia').innerHTML = 'John';
Похожие вопросы
- Почему не работает document.getElementsByClassName('class1') ?
- Что делает этот ява скрипт? if (!lf) { var lf=1; document.write(''); }
- Вопрос по JS. Пожалуйста скажите почему код дает 6 пять раз. Почему не 1,2,3,4,5 .Очень запуталась от setTimeout.
- Интересный вопрос: У кого-то получиться скопировать текст из следующей страницы:
- Здравствуйте, такой вопрос...
- Почему именно эта формула взята для random числа из диапазона ?
- Знатоки, ответьте пожалуйста ответ на общий вопрос про Set & Map
- Почему d[0] не изменяется ?
- Почему функция постоянно возвращает true или false? (но не должна)
- почему так много js файлов?
!(key in window) по поводу этого. Тут если ключ не в window, то по идее цикл не должен запустится. Вопросительный знак это отрицание. Что в твоём случае делает вопросительный знак?