Javascript 如果我给JS变量赋值,它会破坏它的绑定吗?
我有一个存储websocket连接的javascript变量,如下所示: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
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啊,很好的一点,这可能是这一切的原因。也许我可以将它附加到窗口
并全局引用它。好主意;)