javascript - 如何扩展本机DocumentFragment类?

时间:2014-04-11 06:17:45

标签: javascript dom

我想通过HTMLElement#appendChild将我的DomBuilder附加到html。 并替换为jQuery #html


我试过这个

var Fragment = function() {
};


Fragment.prototype = Object.create(DocumentFragment.prototype);
Fragment.prototype.append = function(el) {
    if (el instanceof DomBuilder) {
        return this.append(el.build());
    }

    if (el instanceof Element) {
        this.appendChild.(el);
    }

    return this;
};

$dom.frag = function() {
    var f = new Fragment();

    return f;
};

$dom.frag().append(document.createElement('a'))

抛出'未捕获的TypeError:非法调用'。 我需要超级对象(DocuemtnFragment)才能做到这一点。



第二次尝试:

$dom.frag = function() {
    var f = document.createDocumentFragment();
    f.append = function(el) {
        if (el instanceof DomBuilder) {
            return this.append(el.build());
        }

        if (el instanceof Element) {
            this.appendChild(el);
        }

        return this;
    };
    return f;
};

正常工作,但这会创建功能'追加'对于每个$ dom.frag()调用。

第三次尝试:

DocumentFragment.prototype.append = function(el) {
    if (el instanceof DomBuilder) {
        return this.append(el.build());
    }

    if (el instanceof Element) {
        this.appendChild(el);
    }

    return this;
};


$dom.frag = function() {
    var f = document.createDocumentFragment();
    return f;
};

这项工作正常,并且共享功能'追加'。 但这样可以吗?没有跨浏览器问题?

此网站将支持ie9~ /其他现代浏览器

0 个答案:

没有答案