首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重写javascript的cloneNode?

如何重写javascript的cloneNode?
EN

Stack Overflow用户
提问于 2012-04-04 05:29:22
回答 3查看 884关注 0票数 1

这就是我目前所拥有的:http://jsfiddle.net/beCVL/5/

这就是我试图覆盖默认cloneNode: Object.defineProperty(Object.prototype,"cloneNode",{ get: cloneNode2,set: cloneNode2 })的方法;

但是它不工作,所以,我认为Object.prototype没有cloneNode,但Element.prototype也没有。

那么,假设我的方法是正确的,我需要使用哪个类来覆盖cloneNode呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-04 22:53:27

这一系列的小提琴还在开发中,但它重新实现了cloneNode的功能。http://jsfiddle.net/beCVL/19/

在美国东部时间4月4日上午10:53,它需要与IE协同工作,因为IE没有Node对象。

请注意,在IE中,原型函数不能被覆盖。因此,必须用一个确定要使用哪个版本的cloneNode的函数来替换cloneNode的所有实例。

票数 0
EN

Stack Overflow用户

发布于 2012-04-04 05:36:00

尝试使用:

代码语言:javascript
复制
Node.prototype.cloneNode = cloneNode2;

Object.defineProperty不用于此目的。下面是一个使用它的示例:

代码语言:javascript
复制
var o = {};
Object.defineProperty(o, 'blah', {
    'get': function () { return 'asdf'; },
    'set': function (x) { alert(x); }
});

alert(o.blah); // alerts 'asdf'
o.blah = 'fdsa'; // alerts 'fdsa'

显然,这只适用于Chrome。

要解决实际问题,只需用其等效的十六进制代码替换RGB代码就足够简单了。

代码语言:javascript
复制
function decToHex(a) {
    return ('00' + (+a).toString(16)).substr(-2);
}
function replaceRGB(str) {
    return str.replace(/rgb\((\d{1,3}), (\d{1,3}), (\d{1,3})\)/, function (_, r, g, b) {
        return "#" + decToHex(r) + decToHex(g) + decToHex(b);
    });
}
replaceRGB("color: rgb(255, 0, 0)") // "color: #ff0000"
票数 0
EN

Stack Overflow用户

发布于 2012-04-04 05:39:22

这是Node.prototype https://developer.mozilla.org/En/DOM/Node.cloneNode的财产

Node.prototype.cloneNode = function() {}

然而,修改内置对象可能会在将来给您带来痛苦。如果可能,您应该创建一个不同的函数并使用它,这样就不会破坏使用cloneNode的现有代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10001694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档