前言:对象是个美好的,不管是代码中还是现实中,比如说用对象封装一个html元素,就是简简单单的一个set和get方法,给我们带来的取值计算,设值操作极大的便利,更何况其它自定义的方法。可是当我们又有一天想要删除对象的时候,就发现不是那么简单了,现实也是一样,删除往往很难,删除处理不好,最后只会进入自己的窠臼。
核心内容:对象删除,为什么删除对象?无用对象占用内存,最后就会页面越来越卡。可以通过谷歌浏览器的调试工具profile,检查对象的内存占用。人生则不尽相同,不管怎么样过去都是人生一部分,幼稚也好,羁绊也罢,人生因此而丰富,而精彩。
1.吹牛逼
2.吹牛逼
3.有时候删除和忘记,不如保存和铭记
A:删除第一步,清除对象之间的关系,父子的关系,先删除关系避免在父中还有删除的对象。
B:删除第二步,递归调用,删除时不仅要删除对象本身,如果对象还有子也要删除。
C:删除第三步,对象自己的destroy方法调用,清除对象自己的一些特别的方法和属性,如果是封装的html元素要先清除上面的事件,jq对象用unbind不传参数就是删除所有,传参数就是指定事件,原生对象头疼可以用removeeventlistener,如果之前是通过add句柄加入的话,参数为事件名,方法名,布尔值,记住还不能是匿名函数,这些做完了。才可以用for in循环this,用delete删除所有属性与方法,但是记住删除不了原型链中的属性。
D:删除第四步,对象等于null
E:删除第五部,所有相关的对象引用删除,比如说全局变量中的对象挂靠,还有其他地方的一些引用这个也是比较难处理的一个东西,代码设计阶段就应该减少对象的引用,尽量以id传递,这样不仅内存占用小,删除关系也清晰
总结:凡事有利也有弊,有对也有错,在得利时不要小人得志,在错的时候勇于低头。有时候感慨鸡汤有毒少喝,因为它会给你一万个借口,但不会叫你面对自己。
本我,自我,超我,不是越来越多的放纵而是越来越多的约束。