最近在看以前的项目中代码的时候突然在构造函数中发现了一个很有意思的片段this.own()
;不是很明白这是干什么的(因为那个部分不是我写的);所以果断搜索,在Stack Overflow找到了很详细的解释:own函数是定义在dijit/Destroyable模型中的,这个模型是dijit/_WidgetBase的父类(姑且按照OOP的方式来),因此绝大多数的widget都实现了这个类。
再来看看官网API怎么说的:
Call this.own(...) on list of handles (returned from dojo/aspect,dojo/on,dojo/Stateful::watch,or any class (including widgets) with a destroyRecursive() or destroy() method. Then call destroy() later to destroy this instance and release the resources.
意思就是实现了dijit/Destroyable类的对象在销毁的时候使用了this.own()控制事件的绑定,那么这些实例会在销毁的时候同时释放这些绑定的内存资源。