WEB开发网
开发学院网页设计JavaScript JavaScript面向对象技术实现树形控件 阅读

JavaScript面向对象技术实现树形控件

 2010-09-14 13:25:58 来源:WEB开发网   
核心提示: function tree(){this.branches = new Array();this.add = addBranch;this.write = writeTree;}tree对象代表着整个树形结构的根,tree()构造函数创建了branches数组,JavaScript面向对象

  function tree(){
  this.branches = new Array();
  this.add = addBranch;
  this.write = writeTree;
  }

tree对象代表着整个树形结构的根。tree()构造函数创建了branches数组,这个数组用来保存所有的子元素。add和write属性是指向两个多态性方法的指针,两个多态性方法的实现如下:

  function addBranch(branch){
  this.branches[this.branches.length] = branch;
  }
  function writeTree(){
  var treeString = '';
  var numBranches = this.branches.length;
  for (var i=0;i treeString += this.branches[i].write();
  document.write(treeString);
  }

addBranch()方法把参数传入的对象加入到branches数组的末尾。writeTree()方法遍历保存在branches数组中的每一个对象,调用每一个对象的write()方法。注意这里利用了多态性的优点:不管branches数组的当前元素是什么类型的对象,我们只需按照统一的方式调用write()方法,实际执行的write()方法由branches数组当前元素的类型决定——可能是branch对象的write()方法,也可能是leaf对象的write()方法。

必须说明的是,虽然JavaScript的Array对象允许保存任何类型的数据,但这里我们只能保存实现了write()方法的对象。象Java这样的纯面向对象语言拥有强健的类型检查机制,能够自动报告类型错误;但JavaScript这方面的限制比较宽松,我们必须手工保证保存到branches数组的对象具有正确的类型。

五、branch对象

branch对象与tree对象相似:

  function branch(id, text){
  this.id = id;
  this.text = text;
  this.write = writeBranch;
  this.add = addLeaf;
  this.leaves = new Array();
  }

上一页  1 2 3 4 5 6  下一页

Tags:JavaScript 面向 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接