为什么给对象赋值成null了还会触发事件?

比如下面这段代码

var box = document.getElementById("box");
box.onclick = function(){
    console.log(111);
};
box = null;

为什么我将box赋值为null了,还可以触发box的click事件?我是这样想的虽然后面将box赋值为null了,但是由于事件已经被添加上去了,而事件的处理和box本身无关?不知道这样想对不对,为什么将box.onclick赋值为null就可以,onclick不是属于box的吗?,还望各位大牛能给个合理的解答,谢谢。

阅读 3.8k
4 个回答

这里的box只是一个变量

var box = document.getElementById("box");

这里是将"box"元素的引用赋值给box,你下面的box = null是把null赋值给box对"box"元素并没有影响,建议看一下这篇文章
可能我说的不是很清楚,见谅。

var box = document.getElementById("box");//生成一个box指针, 指向element
box.onclick //element绑定点击事件
box = null; // 清空指针 与element无关

你只是把"小明"这个外号给了另一个人, 但你对原来的"小明"所造成的伤害还在...
作为一个老司机, 我必须纠正你的洗白步骤:
1, 首先掩盖你的罪恶

box.onclick = null;

2, 看情况要不要毁尸灭迹

box = null;
或
box.parentNode.removeChild(box);

实际上box只是指向DOM元素的一个“指针”。

你对box的属性做操作会影响DOM元素,但是当你把它赋值为null时,只是把box的指向改变了,不表示把DOM元素清除了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题