Javascript hasOwnProperty在Event对象上总是为false?

时间:2015-07-31 18:54:52

标签: javascript events clone hasownproperty

我希望有人可以帮助澄清与事件对象有关的hasOwnProperty()方法。

我正在尝试克隆鼠标事件(最终此对象将传递给iframe) 我已经建立了一个克隆'函数 - 但每当我尝试克隆一个窗口事件(即滚动,点击等)时,所有' hasOwnProperty()'返回false。 例如,我迭代对象 - 使用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 个答案:

答案 0 :(得分:2)

Your assumption is correct - the e argument is a hollow new MouseEvent object that has no own properties, only those inherited from the prototype chain MouseEvent<-UIEvent<-Event. Here's the inheritance diagram:

enter image description here

答案 1 :(得分:0)

您创建了一个名为newObject的对象,但是您返回了一个名为newNode的对象,您从未定义或添加任何内容。尝试将return语句更改为:

return newObject;

我认为这会给你一个具有事件本身具有的属性的对象。