2013-08-28 3 views
6

Друзья,hasOwnProperty HTMLElement Firefox

я замечаю в Firefox v23.0.1, что hasOwnProperty из HTMLElement (вход, button..etc) не работает,

button1.hasOwnProperty('id') = false 

Я использую для проверить :

var str1 = ''; 
     for (pp in button1) { 
      if (button1.hasOwnProperty(pp)) { 
       str1 += (',' + pp); 
      } 
     } 
     alert(str1);//nothing here 

но в хроме hasOwnProperty хорошо работает.

Знаете ли вы, что это ошибка?

+0

Тест немного более широко, и вы найдете браузеры в использовании, которые не поддерживают * hasOwnProperty * на объекты DOM, и они не реализуют любой вид наследования. – RobG

ответ

5

В соответствии с спецификацией свойство «id» находится либо в элементе HTMLElement.prototype, либо в элементе.prototype (в зависимости от версии спецификации).

Firefox получает это право. Вместо этого Chrome помещает все свойства непосредственно на объекты.


http://dev.w3.org/2006/webapi/WebIDL/#es-attributes http://dev.w3.org/2006/webapi/WebIDL/#ecmascript-binding

+0

Вы уверены? Свойства, подобные id, не имеют никакого смысла в прототипе. Я бы предположил, что они просто не перечислимы в Firefox (не уверен, что по спецификации DOM или нет). – bfavaretto

+1

По какой спецификации? Всегда хорошо сказать, какой из них, поскольку спецификации DOM до недавнего времени были языковыми агностиками. И вы всегда должны делать резервные копии таких утверждений с соответствующими ссылками. – RobG

+0

Я согласен с @Bergi. Это невозможно. Если 'id' будет на« прототипе », он будет делиться между всеми экземплярами, что не имеет никакого смысла. – plalx

 Смежные вопросы

  • Нет связанных вопросов^_^