zoukankan      html  css  js  c++  java
  • [译]FireClosure – JavaScript闭包检查器

    原文:https://blog.getfirebug.com/2012/11/07/fireclosure-javascript-closure-inspector/


    FireClosure是一个值得关注的Firebug扩展.它能很好的集成到Firebug目前的UI中(实际上我们正在考虑是否要把该扩展内置到Firebug中),它的作用是用来查看(Inspector)JavaScript中的闭包.

    该扩展的作者是 Simon Lindholm.(译者注:非知名人士,这是他AMO上唯一的一个扩展)

    例子

    首先,让我们看一个简单的例子:

    var PersonFactory = function(name, age)
    {
        return {
            getName: function() { return name; },
            getAge: function() { return age; },
        };
    };
    
    var person = PersonFactory("Bob", 58);

    现在,假如我们需要"检查"(inspect)person这个对象,但该操作并不是那么简单,因为该对象实际上没有任何属性.只有两个函数类型的属性使用到了闭包,通过闭包能够访问到传给PersonFactory函数的变量(参数name和age).

    所以,我们不能在Firebug的命令行下执行下面的表达式:

    person.name //无法获取到name属性

    可是,如果你安装了FireClosure,你可以使用下面的语法:

    person.%name

    另外,FireClosure也集成到了DOM面板中,查看下面的截图

    多出了一个新的区域"作用域变量"(scoped variables),显示出了闭包中的所有局部变量.
     
    你还可以使用Watch侧边栏来检查(inspect)闭包.


     

    注意

    • Firefox经常会优化掉一些闭包和变量.在调试的时候,你可以故意在相关代码周围临时添加一些无意义的eval语句,来防止这种优化(当然代码的性能会降低).(译者注:eval和with都会影响性能,随着JIT的引入,这种性能差异应该会越来越大)
    • 一些对象可能有些意外的作用域.这是因为非函数(non-function)的对象并没有真正的作用域,这种功能是通过它的函数类型的属性来实现的.

    反馈

    我们非常希望得到关于该功能的反馈,请告诉我们你的想法.

    • 关于该功能,我们还能做哪些改进?
    • 你喜欢该功能目前的语法吗 .%?
    • 我们应该把该功能集成到Firebug中吗?

    请到讨论组中提交反馈,谢谢!

    Jan 'Honza' Odvarko (译者注:他是Firebug的作者,目前自由职业,全职开发Firebug)

  • 相关阅读:
    ssh-keygen Linux 免密登录
    hostnamectl 修改 CentOS7 主机名
    微信公众平台开发—24点游戏
    微信公众平台开发—起步
    java的静态代理和动态代理(jdk、cglib)
    UEditor上传图片到七牛云储存(java)
    第四十篇-private,public,protected的区别
    第七篇--ubuntu18.04下面特殊符号
    6. 计算器界面
    第六篇--Ubuntu画图软件
  • 原文地址:https://www.cnblogs.com/ziyunfei/p/2760137.html
Copyright © 2011-2022 走看看