Ответ 1
В справочнике по языку используются абстрактные термины, поскольку среды JavaScript могут сильно различаться. В браузере окно (фрейм, окно, открытое с помощью window.open()
или просто простая вкладка браузера) является областью. Веб-работник - это другая сфера, нежели окно, но это сфера. То же самое касается сервисных работников.
Для объекта возможно пересечение границ области, потому что окна, открытые из общего базового окна, могут взаимодействовать через вызовы функций и простые ссылки на переменные. Упоминание об instanceof
в той цитате, которую вы цитировали, имеет к этому отношение. Рассмотрите этот код в окне <iframe>
:
window.parent.someFunction(["hello", "world"]);
Затем представьте функцию в родительском окне:
function someFunction(arg) {
if (arg instanceof Array) {
// ... operate on the array
}
}
Это не сработает. Зачем? Потому что массив, созданный в окне <iframe>
был создан из конструктора Array в этой области, и, следовательно, массив не является экземпляром, созданным из Array в родительском окне.
Существует гораздо более прочная "стена" между сферами веб-рабочих и областями окон, и такие эффекты не возникают в этих взаимодействиях.