javascript - 绘制原型(prototype)链

标签 javascript inheritance graph tree

是否有现有的方法可以直观地绘制 JavaScript 原型(prototype)链?

基本上,我希望看到一个继承树,以便我可以更好地了解大型项目的工作原理。

最佳答案

您可以编写一个简单的函数并向其发送任何对象以查看其原型(prototype)链:

function printPrototypeChain(o,order)
{
    /*
       order is an optional parameter, you can send it "PtoC" to print the prototype chain in the Parent to Child order. The default order is Child to Parent.
    */
    var a = [];
    var t = o;
    while(t)
    {
       a.push(t);
       t = Object.getPrototypeOf(t);
    }
    if(order==="PtoC")
    {
       a.reverse();
    }
    for(var i =0; i<a.length; i++)
    {
       console.log(a[i]);
    }
}

var o = { y: 3};

function f(x)
{
  this.x = x;
}

var F = new f(2);

printPrototypeChain(F);

--------------------------------OUTPUT-----------------------------
f {x: 2, y: 3} 
Object {y: 3} 
Object {} 
--------------------------END OF OUTPUT---------------------------- 

printPrototypeChain(F,"PtoC");

--------------------------------OUTPUT-----------------------------
Object {} 
Object {y: 3} 
f {x: 2, y: 3} 
--------------------------END OF OUTPUT----------------------------

关于javascript - 绘制原型(prototype)链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26942192/

相关文章:

javascript - IE v. FF : Is table. tBodies[0] 有效吗?

JavaScript .scroll 函数不起作用

ios - 使用具有协议(protocol)继承的泛型类在归档应用程序时出现 Segmentation failure 11 错误

ruby - 嵌套单例类方法查找

php - 在 PHP 中获取扩展类的当前工作目录

找到所选顶点的最小生成树的算法

javascript - 碰撞canvas html 5时球碰撞粘在一起

javascript - jqplot:在两条线之间填充颜色

algorithm - 增量价格图近似

javascript - 我怎样才能让父元素在大小方面与它的子元素完全一样?