修改 insertBefore

Posted

技术标签:

【中文标题】修改 insertBefore【英文标题】:modify insertBefore 【发布时间】:2011-09-16 22:25:24 【问题描述】:

有什么方法可以用我自己的函数替换 insertBefore 和类似函数。我的目标是实现一个撤消功能,如果我能够以这种方式实现它,我就不必用我的函数名称更改代码中的每个 insertBefore 实例,这也将使进一步的开发更容易。

我在这里Disable a built-in function in javascript (alert) 找到了类似的东西,但我无法弄清楚如何在我的情况下使用它,因为我不知道谁是这些函数的父级(insertBefore、appendChild 等)。

我只想插入一行代码,然后调用原生代码。

请指教

PS。我正在尝试实现撤消功能,并且该库要求我在该撤消功能中注册撤消以允许重做。所以我想做的就是让一行代码总是在任何 insertBefore 和类似函数之前执行。

我说的不是任何库,只是简单的 ECMAscript。

【问题讨论】:

一些示例代码会对我们有所帮助。你要插入哪一行? 【参考方案1】:

如果你说的是Node接口的insertBefore方法,那么能不能做就真的没有意义了。重要的是你不应该。它是一个宿主对象的方法,应该单独放置。

顺便说一下,术语built-in 通常用于表示ECMAScript 的内置对象和方法。 window.alert 方法被更准确地描述为一个宿主对象的方法 并且真的不应该被篡改(尽管通常它可以被篡改)。

【讨论】:

你能解释一下为什么它不应该被篡改吗?是因为它可能会意外影响页面的其余部分吗? 在Node的原型中加入insertBefore_mine等类似的功能,而不是替换原来的,这样可以吗? 我听取了您的建议并为 DOM 操作实现了一个单独的接口,但我仍然很想知道您提出建议的原因。 宿主对象本身就是一个法则,它们定义了接口但没有实现。 Kangax 对why host objects should not be extended 有很好的解释。即使在封闭或受控的环境中,根据特定实现的功能可能会限制用户代理的未来选择,因此即使这样也不是一个好主意。

以上是关于修改 insertBefore的主要内容,如果未能解决你的问题,请参考以下文章

怎么修改文件修改日期

电脑文件修改时间和实际修改时间不一样

ce修改器使用方法

Sql Server 增加字段修改字段修改类型修改默认值(转)

网卡MAC怎么修改

关于windows 2003域控账户修改密码问题,客户端账号过期的时候修改密码提示“您无权修改密码”。