Javascript hasOwnProperty всегда ложно на объектах Event?

Я надеялся, что кто-нибудь может помочь прояснить метод hasOwnProperty() по отношению к объектам событий.

Я пытаюсь клонировать событие мыши (в конечном итоге этот объект будет передан в iframe). Я уже создал функцию "клонирование" - но всякий раз, когда я пытаюсь клонировать событие окна (т. Е. Прокрутить, щелкнуть и т. Д.), Все экземпляры hasOwnProperty()'вернуть ложь. Например, я перебираю объект - использую hasOwnProperty() для проверки - и каждое свойство возвращает false. Это работает для стандартных объектов, но не для объектов событий.

Это потому, что все свойства объектов событий наследуются? Или есть проблема с кодом?

Любое просвещение будет оценено:)

Фрагмент кода:

function cloneObject (o_node) {
 var newObject = {};

  for (var child_node in o_node) {

    if (o_node.hasOwnProperty(child_node)) {
    //no object properties are returning true at this point. 

    newObject[child_node] = o_node[child_node];

    }else{
    console.log("!hasOwnProperty()");
    }
  }
 return newNode;
}

function onclick(e){

   var cloned_object_e = cloneObject(e); //returns an empty object;

}

window.addEventListener('click', onclick);

2 ответа

Решение

Ваше предположение верно - e аргумент пуст new MouseEvent объект, который не имеет собственных свойств, только те, которые унаследованы от цепочки прототипов MouseEvent<-UIEvent<-Event, Вот схема наследования:

Вы создали объект с именем newObject, но вы вернули объект с именем newNode, который вы никогда не определяли и не добавляли. Попробуйте изменить выражение возврата на это:

return newObject;

Я думаю, что это даст вам объект с некоторыми свойствами, которыми обладает само событие.

Другие вопросы по тегам