jquery加载xml时在Object的原型链上自定义了方法后会报错

我在Object的原型链上定义了如下方法用于获取xml节点的文本

Object.prototype.xmlText = function(){
    console.log('执行了这里');
    try{
        return new XMLSerializer().serializeToString($(this)[0]);
    }catch(e){
        return '';
    }
}

然后定义了如下方法用于加载一个xml文件的节点对象

function fn_load_xml_debug(_url){
    var ret = {};
    $.ajax(
    {
        type: "get",
        url:_url,
        async: false,
        dataType: "xml",
        success: function(xml) {
            console.log('成功');
            ret = xml;
        },
        error:function(e){
            console.log(JSON.stringify(e));
        }
    });
    return ret.documentElement;
}

这时问题来了,我在调用fn_load_xml_debug('xml/test.xml')方法后,ajax请求直接报错了,如下,并且在调用该方法时会自动执行我在原型链上定义的方法,我把在原型链上定义的方法删除了就可以成功加载xml了,这是怎么回事啊?

{"readyState":0,"status":0,"statusText":"TypeError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': String contains non ISO-8859-1 code point."}

虽然还是不知道原因,不过已经找到解决办法了,直接把xmlText()方法定义到jquery对象上就可以了

$.fn.xmlText = function(){
    return new XMLSerializer().serializeToString($(this)[0]);
}

要不,你试试换个名字,我感觉是你自定义的属性把Ajax本身的同名属性给覆盖了