2015-08-15 80 views
-1

我想要做的事,如:有没有办法检查在Javascript(或局部变量)一clousure

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)); 

我的目标是编程自动化工具调试insi de我的程序,或写普通prupouse日志。或者用本地变量的值打印调用堆栈。

+1

没有这里涉及到关闭。你试图访问的所有变量在相同的范围内 – thefourtheye

+0

首先你的例子必须关闭,第二,'this.forward = function(){...}'应该是正确的。 – thecodeparadox

+0

你正在写。我在我的问题中写了更多的代码。 –

回答

0

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);


+0

是的,但在你的代码中,私有变量(var age)变成public(this.age)。私人在[crockfors](http://javascript.crockford.com/private.html)意识 –

+0

@EmilioPlatzer _“是的,但在你的代码中,私有变量(var age)变成public(this.age)。感觉“_未在问题中指出”年龄“应该保持”私密“? – guest271314

+0

是的,我很抱歉不清楚。我希望保持不变,直到这个前瞻性的定义。 –

0

是,使用断点在Chrome开发工具,很容易。

首先,打开开发工具并单击源选项卡。找到包含您想要检查的代码的Javascript文件并选择它。该文件的内容将出现在右侧的窗口中。

接下来,单击左列中的一个行号插入一个断点。使用上面的代码,尝试在第10行左右的地方(好吧,关闭中的任何地方也可以工作)。重新加载页面,当达到断点时,您将能够在下面的“范围”窗口中检查各种变量的值。

+0

我想要一些程序 –

0

您可以尝试以下操作。在这里,我创建了一个新的实例(myExample)。所以,在函数内部,this关键字将引用myexample中(或调用的任何其它情况下),所以你可以设置属性,也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); 
相关问题