Это свойства , определенные конкретным браузером. и не определены в ECMAScript .
Поэтому следует избегать конфликта имен ,Если бы они назвали свойство defineGetter
, то не было бы никакой гарантии, что код веб-сайта еще не определил свойство с таким же именем - и это вызвало бы много проблем.Однако добавление двух подчеркиваний стало де-факто способом определения специфических свойств браузера (так как некоторые веб-сайты будут использовать это соглашение гораздо реже).
Вы можете заметить, что другие браузеры начинают использовать то же соглашение об именах, что и другиекак использование __proto__
), но это все еще не всегда гарантировано для всех браузеров (например, IE не определяет __proto__ property
).
Также: соглашение об использовании двух подчеркиваний для «определяемых системой» идентификаторов(в отличие от идентификаторов, определенных программистом) возвращается назад, так что я не знаю, когда это соглашение «началось» - по крайней мере, до C ++ (см. http://en.wikipedia.org/wiki/Name_mangling#Simple_example)