Javascript 如果我给JS变量赋值,它会破坏它的绑定吗?

Javascript 如果我给JS变量赋值,它会破坏它的绑定吗?,javascript,javascript-events,Javascript,Javascript Events,我有一个存储websocket连接的javascript变量,如下所示: var ws = $.websocketSettings.factory(url); $(ws) .bind('open', $.websocketSettings.open) .bind('close', $.websocketSettings.close) .bind('message', $.websocketSettings.m

我有一个存储websocket连接的javascript变量,如下所示:

var ws = $.websocketSettings.factory(url);
        $(ws)
            .bind('open', $.websocketSettings.open)
            .bind('close', $.websocketSettings.close)
            .bind('message', $.websocketSettings.message)
            .bind('error', $.websocketSettings.error)
            .bind('relaySent', $.websocketSettings.relayTimeout)
            .bind('relayRetry', $.websocketSettings.relayRetry)
            .bind('jumpStart', $.websocketSettings.jumpFactory);
但是,如果连接断开,我会有一个
jumpStart
事件,用新连接重置
ws
变量

jumpFactory: function(event){
            var ws = this;
            ws = $.websocketSettings.factory( getEngineUrl() );
            return ws;
        },

这会破坏
ws
上绑定的事件吗?我看到一些奇怪的行为,所以试图找出原因。谢谢。

您没有将事件绑定到任何变量,而是绑定到其中引用的值对象。将新对象分配给变量不会自动地将这些绑定从旧对象转移到新对象。此外,只要从某个地方引用此对象旧对象,这些事件将继续激发。

您不将事件绑定到任何变量,而是绑定到其中引用的值对象。将新对象分配给变量不会自动地将这些绑定从旧对象转移到新对象。此外,只要从某个地方引用此对象或旧对象,这些事件将继续激发。

是的,当然会。绑定到ws引用的原始对象,而不是变量名。事实上,绑定仍然存在,您可能看到为旧对象触发的事件。我认为,由于您再次使用var ws,您可能在jumpfactory空间中声明了一个新变量,而没有引用原始的wsvar@TommyBs啊,很好的一点,这可能是这一切的原因。也许我可以将它附加到
窗口
并全局引用它。好主意;)是的,当然会。绑定到ws引用的原始对象,而不是变量名。事实上,绑定仍然存在,您可能看到为旧对象触发的事件。我认为,由于您再次使用var ws,您可能在jumpfactory空间中声明了一个新变量,而没有引用原始的wsvar@TommyBs啊,很好的一点,这可能是这一切的原因。也许我可以将它附加到
窗口
并全局引用它。好主意;)