Можно ли добавить какой-либо случайный атрибут к объекту 'window' в javascript? Что-то вроде:
window.my_own_attr = "my_value"
Есть ли какие-либо побочные эффекты с любыми библиотеками? И совместима ли она с несколькими браузерами?
Можно ли добавить какой-либо случайный атрибут к объекту 'window' в javascript? Что-то вроде:
window.my_own_attr = "my_value"
Есть ли какие-либо побочные эффекты с любыми библиотеками? И совместима ли она с несколькими браузерами?
Можно ли добавить какой-либо случайный атрибут к объекту 'window' в javascript?
Да, точно так же, как вы показали.
Есть ли у него какие-либо побочные эффекты с любыми библиотеками?
Нет, если вы не используете библиотеку, которая устанавливает свойство, которое вы затем перезаписываете.
И совместим ли он с несколькими браузерами?
Да, полностью.
Сказав это, эта практика, как правило, не одобряется. Вы могли бы переписать что-то, чего не хотите.
Во всех браузерах window
- это глобальное пространство имен javascript. Каждое свойство или метод "живет" в этом пространстве имен. Поэтому, если вы присваиваете свойство window
, это глобальная переменная.
Пример:
window.myConstant = 5;
function multiply(val){
return myConstant * (val || 1);
}
multiply(10); //=> 50
multiply(); //=> 5
Вы должны быть осторожны с фреймворками javascript. Например, если вы объявите window.JQuery
и используете инфраструктуру JQuery
, пространство имен JQuery
будет заменено вашим назначением, что сделает его бесполезным.
Да, вы можете, но в целом вы не должны.
Объект window
также является "глобальным" объектом по умолчанию JS, поэтому туда добавляются все глобальные переменные.
Вы вряд ли сломаете что-либо, если вы не перепишете уже существующее свойство, но считаете, что плохая практика дампирует переменные на window
или иначе создает множество глобальных переменных.
Это хорошо работает, не конфликтует с какой-либо библиотекой, пока не будет использовано то же имя переменной, будет работать во всех браузерах, но не рекомендуется, так как это создаст глобальную переменную JS.
В IE, если элемент имеет идентификатор, тогда node доступен в объекте window как свойство:
<div id="num"></div>
alert(num); //Element
num = 3; //throws exception
var num = 3; //ok