2015-08-15 125 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); 
相關問題