Javascript 多次调用对象

Javascript 多次调用对象,javascript,Javascript,您好,我有替换文档的代码。编写,生成缓冲区,然后将缓冲区推入文档: var lazyLoad = { url: '', block: '', buffer: '', init: function(url,block){ that = this that.url = url; that.block = block; console.info(this.block) consol

您好,我有替换
文档的代码。编写
,生成缓冲区,然后将缓冲区推入文档:

  var lazyLoad = {

    url: '',
    block: '',
    buffer: '',

    init: function(url,block){
        that = this
        that.url = url;
        that.block = block;

        console.info(this.block)
        console.log(this.url)

        window.d = document
        window.onload = function(){
            that.work()
        }   
    },

    work: function(){
        that = this
        d.write = d.writeln = function(s){ 
                                    that.buffer += s
                                }
        d.open = d.close = function(){}
        s = d.createElement('script');       
        s.setAttribute('type','text/javascript');
        s.setAttribute('src',that.url);
        d.getElementById(that.block).appendChild(s)
        s.onload = function () {
            window.setTimeout(function() {

                console.warn(that.block + ' ' +that.buffer)
                d.getElementById(that.block).innerHTML += that.buffer;
                that.buffer = '';
            }, 0);
       }
    }
}
如果我初始化它一次:

lazyLoad.init(
        'http://test.com/test.js',              
         div1
)
但如果我用其他参数再次调用它:

lazyLoad.init(
        'http://test2.com/test.js',             
         div2
)
首先,它不起作用<代码>窗口。缓冲区将为空。我的错在哪里


另一个问题:我试图用jQuery方法
$(window.load()
替换
window.onload
,但它触发了两次。如何修复它?

基本上,您只有一个缓冲区:window.buffer,如果调用init()两次,window.buffer将由第二次调用操作,而第一次调用可能无法完成我建议您为每个init()使用单独的缓冲区。基本上可以避免这个问题。

关于你的第二个问题

window.onload != $(window).load()

window.onload将只执行您上次分配给它的方法,而$(window.load()维护一个链,您可以init()两次,然后链中有两个方法。

好的,我更改了缓冲区,更新了post,但它仍然只在第二次init时工作。首先-什么都没有发生您仍然只有一个缓冲区,即lazyload.buffer。现在,您可以使用数组来存储每次调用的缓冲区。或者更简单的解决方案是:每次使用新的lazyload对象初始化()”或者更简单的解决方案是:每次使用新的lazyload对象初始化()”您的意思是什么?