文件名称:引用父对象-清华大学计算机考研经验贴.
文件大小:8.5MB
文件格式:PDF
更新时间:2024-07-15 10:06:12
javasc
10.9 引用父对象 在 11.7 节提到的例子中,组合对象保存了它下面的子节点的引用,这是组合模式的特点,此 时树结构是从上至下的。但有时候我们需要在子节点上保持对父节点的引用,比如在组合模式中 使用职责链时,有可能需要让请求从子节点往父节点上冒泡传递。还有当我们删除某个文件的时 候,实际上是从这个文件所在的上层文件夹中删除该文件的。 现在来改写扫描文件夹的代码,使得在扫描整个文件夹之前,我们可以先移除某一个具体的 文件。 首先改写 Folder 类和 File 类,在这两个类的构造函数中,增加 this.parent 属性,并且在调 用 add 方法的时候,正确设置文件或者文件夹的父节点: var Folder = function( name ){ this.name = name; this.parent = null; //增加 this.parent 属性 this.files = []; }; Folder.prototype.add = function( file ){ file.parent = this; //设置父对象 this.files.push( file ); }; Folder.prototype.scan = function(){ console.log( '开始扫描文件夹: ' + this.name ); for ( var i = 0, file, files = this.files; file = files[ i++ ]; ){ file.scan(); } }; 接下来增加 Folder.prototype.remove 方法,表示移除该文件夹: 图灵社区会员 balabala233 专享 尊重版权