posts - 28,  comments - 15,  trackbacks - 0
今天在看完xtree.js代码后,发现一个问题。在执行javascript的document.write(obj)方法时,如果obj实现了prototype的toString()方法,document.wirte方法将能自动调用obj的toString()方法。代码如下:
   /*----------   树构造代码 ---------*/
        if (document.getElementById) {
           var tree = new WebFXTree('Root');
           tree.setBehavior('classic');
           var a = new WebFXTreeItem('1');
           tree.add(a);
           var b = new WebFXTreeItem('1.1');
           a.add(b);
          b.add(new WebFXTreeItem('1.1.1'));
          b.add(new WebFXTreeItem('1.1.2'));
          b.add(new WebFXTreeItem('1.1.3'));
          var f = new WebFXTreeItem('1.1.4');
          b.add(f);

         document.write(tree);

/*------------------ xtree.js代码片段 ----------*/

WebFXTree.prototype.toString = function() {
alert("it's here!");
 var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this, event)\">" +
  "<img id=\"" + this.id + "-icon\" class=\"webfx-tree-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\">" +
  "<a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\"" +
  (this.target ? " target=\"" + this.target + "\"" : "") +
  ">" + this.text + "</a></div>" +
  "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
 var sb = [];
 for (var i = 0; i < this.childNodes.length; i++) {
  sb[i] = this.childNodes[i].toString(i, this.childNodes.length);
 }
 this.rendered = true;
 return str + sb.join("") + "</div>";
};

经过跟踪,证实在执行document.write(tree)时,调用了WebFXTree.prototype.toString 方法。
posted on 2009-08-13 16:20 zhangxl 阅读(1004) 评论(1)  编辑  收藏


FeedBack:
# re: JavaScript的toString()方法自动调用
2011-03-14 09:10 |
更呼庚呼癸  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2011年3月>
272812345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(1)

随笔分类(17)

随笔档案(28)

文章分类(30)

文章档案(30)

相册

收藏夹(2)

hibernate

java基础

mysql

xml

关注

压力测试

算法

最新随笔

搜索

  •  

积分与排名

  • 积分 - 95630
  • 排名 - 603

最新评论

阅读排行榜

评论排行榜