是否有一种方法来检查Javascript中的闭包(或局部变量)
Is there a way to inspect a clousure in Javascript (or local variables)
我想这样做:
function example(name){
var age = 0;
var started = false;
var start = function(){
started = true;
}
this.forward = function(){
age++;
}
console.log( SOMECODE );
}
example('boby');
我希望在SOMECODE
中打印一些类似的东西:
name: "boby"
age: 0
started: false
start: [Function]
forward: [Function]
我喜欢这样写:
function inspect(locals){
for(var name in locals){
console.log(name, ':', locals[name]);
}
}
console.log(inspect(example.locals));
// or
console.log(inspect(example.stack[-1].locals));
// or
console.log(inspect(example.clousure));
我的目标是编写用于在程序中调试的自动化工具,或者编写通用的错误日志。或者用局部变量的值打印调用堆栈。
是的,在Chrome开发工具中使用断点,这很容易。
首先,打开开发工具并单击Sources选项卡。找到包含要检查的代码的Javascript文件并选择它。文件的内容将出现在右边的窗口中。
接下来,单击左列中的一个行号以插入一个断点。使用上面的代码,尝试在第10行左右的某处(好吧,闭包中的任何地方都可以)。重新加载页面,当到达断点时,您将能够在下面的"Scope"窗口中检查各种变量的值。
您可以尝试以下操作。在这里我创建了一个新的实例的例子(myExample)。因此,函数中的this关键字将引用myExample(或任何其他调用example的实例),因此您可以设置属性和console.log
https://jsfiddle.net/w46ec5eb/1/function example(name){
this.age = 0;
this.started = false;
this.start = function(){
this.started = true;
};
this.forward = function(){
this.age++;
};
console.log(this );
}
var myExample = new example('boby');
myExample.start();
myExample.forward();
console.log(myExample);
function Example(name) {
// define `init` function
var obj = {};
this.init = function (name) {
// set `this` properties , values
var name = name;
var age = 0;
var started = false;
var start = function start() {
started = true;
}
var forward = function forward() {
age++;
}
this.forward = forward;
obj[name] = name;
obj[age] = age;
obj["started"] = started;
obj["start"] = start;
obj["forward"] = forward;
return this
// this.start();
// this.forward()
}
// call `this.init`
var res = this.init(name);
console.log( obj );
}
var example = new Example("boby");
console.log(example);
相关文章:
- for循环中的JavaScript闭包
- Javascript闭包-如何防止内存泄漏
- Javascript.闭包和dynamic'这'实际上具有约束力
- 用于添加两个数字的javascript闭包的用法
- 什么'这个javascript闭包的区别是什么
- 我可以使用JavaScript闭包添加数字吗
- javascript闭包:保护内部变量
- JavaScript闭包&回调函数
- 这些被认为是Javascript闭包吗
- JSHint 错误“对象不支持此属性或方法”用于 javascript 闭包
- JavaScript闭包的效果如何
- JavaScript 闭包和 for 循环
- 在谷歌地图示例中为 Ajax 调用制作一个 JavaScript 闭包
- JavaScript闭包和返回数组元素
- 如何在严格模式下实现以下JavaScript闭包
- 请解释这个Javascript闭包练习
- JavaScript闭包和变量引用
- Javascript闭包覆盖函数表达式
- Javascript闭包错误
- 为什么JavaScript闭包不能与预定义的函数一起使用