我有一个对象,当该对象被实例化时,它会将单击事件处理程序附加到<body>
. (附加过程发生在该对象的定义中)
当 URL 改变时(当用户导航到另一个页面时),这个对象被实例化。
此对象“每页”始终存在一种类型,并且如前所述,当面板更改时它会重新实例化,并且旧对象将不再存在。
附加过程如下所示:
var doc = $(document.body);
doc.off('click');
doc.on('click', function(){
do_stuff();
});
我使用它是因为我注意到如果只是附加事件处理程序,省略.off()
,当我浏览网站时,处理程序将在一次简单的单击时触发更多次(因为它已附加/注册到该对象的每个实例化)。
现在,我可以将这个附加过程移到其他地方,例如在发生实例化的代码部分中,因此它不会依赖于该对象并确保处理程序只会附加一次,但这会剥夺我对一些局部变量,我必须使它们可以访问该代码部分。
我的问题是:这在性能方面会花费很多吗?我注意到这里有一些关于 stackoverflow 的帖子,强调这不是最佳的,但大多数示例都显示了/binding内部.off()
发生或解除绑定的代码。.on()
重要提示:我正在使用backbone.js。这是一个“单页网站”。对象基本上是视图,它们的实例化发生在路由器中。