我想知道 dojo 小部件中“this.own()”方法的意图。Dojo Api 1.8 文档中提到了此方法,例如在 diijit/form/button 下。我在谷歌上没有找到任何对我有意义的东西。这就是提到该方法的方式:
连接(对象,事件,方法)
已弃用,将在 2.0 中删除,请改用 this.own(on(...)) 或 this.own(aspect.after(...)) 。
我想知道 dojo 小部件中“this.own()”方法的意图。Dojo Api 1.8 文档中提到了此方法,例如在 diijit/form/button 下。我在谷歌上没有找到任何对我有意义的东西。这就是提到该方法的方式:
连接(对象,事件,方法)
已弃用,将在 2.0 中删除,请改用 this.own(on(...)) 或 this.own(aspect.after(...)) 。
该own
函数在 中定义dijit/Destroyable
,它是dijit/_WidgetBase
大多数小部件的基础。
dijit/Destroyable 用于跟踪实例的句柄,然后在实例被销毁时销毁它们。应用程序必须在实例上调用 destroy() 才能释放句柄
http://dojotoolkit.org/reference-guide/1.8/dijit/Destroyable.html
http://dojotoolkit.org/reference-guide/1.8/dojo/Evented.html
简短的回答是:.own()
一旦小部件本身被销毁,您在内部定义的大部分内容都会被正确删除。使用.own()
可防止应用程序中的内存泄漏。
要从页面中删除小部件,您可以在小部件上调用destroy 或destroyRecursively。
当您这样做时,您使用 this.own 添加的任何内容(dojo/on、dojo/aspect、dojo/topic、dojo/router、相关 DOM 节点或小部件的创建等)都将被删除和/或取消注册自动地。这是通过 dijit/Destroyable 接口实现的。