Подтвердить что ты не робот

Можно ли добавлять атрибуты к объекту 'window' в javascript?

Можно ли добавить какой-либо случайный атрибут к объекту 'window' в javascript? Что-то вроде:

window.my_own_attr = "my_value"

Есть ли какие-либо побочные эффекты с любыми библиотеками? И совместима ли она с несколькими браузерами?

4b9b3361

Ответ 1

Можно ли добавить какой-либо случайный атрибут к объекту 'window' в javascript?

Да, точно так же, как вы показали.

Есть ли у него какие-либо побочные эффекты с любыми библиотеками?

Нет, если вы не используете библиотеку, которая устанавливает свойство, которое вы затем перезаписываете.

И совместим ли он с несколькими браузерами?

Да, полностью.


Сказав это, эта практика, как правило, не одобряется. Вы могли бы переписать что-то, чего не хотите.

Ответ 2

Во всех браузерах window - это глобальное пространство имен javascript. Каждое свойство или метод "живет" в этом пространстве имен. Поэтому, если вы присваиваете свойство window, это глобальная переменная.

Пример:

window.myConstant = 5;

function multiply(val){
  return myConstant * (val || 1);
}
multiply(10); //=> 50
multiply(); //=> 5

Вы должны быть осторожны с фреймворками javascript. Например, если вы объявите window.JQuery и используете инфраструктуру JQuery, пространство имен JQuery будет заменено вашим назначением, что сделает его бесполезным.

Ответ 3

Да, вы можете, но в целом вы не должны.

Объект window также является "глобальным" объектом по умолчанию JS, поэтому туда добавляются все глобальные переменные.

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

Ответ 4

Это хорошо работает, не конфликтует с какой-либо библиотекой, пока не будет использовано то же имя переменной, будет работать во всех браузерах, но не рекомендуется, так как это создаст глобальную переменную JS.

Ответ 5

В IE, если элемент имеет идентификатор, тогда node доступен в объекте window как свойство:

<div id="num"></div>

alert(num); //Element

num = 3; //throws exception

var num = 3; //ok