【发布时间】:2018-06-23 23:16:18
【问题描述】:
我处于一种情况,我不得不编写自己的事件冒泡。因此,我需要将给定的 Event-Object(最初从 Browser/DOM 创建)传递给多个函数/实例,但我需要更改 .target 属性。
问题:几乎所有属性的属性描述符都否认任何突变、删除或更改。此外,似乎无法使用 Object.assign 克隆或复制整个 Event-Object 或使用 Object.getOwnPropertyNames 或 Object.keys 读取属性。
当然可以手动通过分配将所有属性复制到一个新对象中,但这似乎很愚蠢。
我试图变得非常聪明,只使用原始事件对象作为新对象的原型,以隐藏我想要变异的属性。喜欢
Object.setPrototypeOf( customEvent, event );
但如果我这样做,任何对 customEvent 属性的访问都会抛出:
未捕获的类型错误:非法调用
如果我们使用代理处理程序,它似乎确实有效,它也可以用来遮蔽某些属性。我在这里遇到的唯一问题是,仍然无法通过代理执行像 stopPropagation 这样的函数(Uncaught TypeError: Illegal invocation 再次)。
问题:操作/扩展 DOM 事件对象的最佳做法是什么?
如果你以任何形式或形式提及jQuery,你将遭受7年的不幸。
【问题讨论】:
-
"You will suffer from 7 years of misfortune if you mention jQuery in any form or shape.":rolling_on_the_floor_laughing:
标签: javascript dom dom-events