簡體   English   中英

console.log之前的對象中的Java更改鍵

[英]Javascript alter key in object before console.log

這段代碼的結果中出現了我無法解釋的東西

var ctrl1 = {
    func1: function(objct){
        objct.options.b = "b";
    }
}

var ctrl2 = {
    myvar : {options:{a:"a"}},
    func2: function(){
        console.log(ctrl2.myvar);
        ctrl1.func1(ctrl2.myvar);
    },
}

ctrl2.func2();

我有結果

Object {a:"a", b:"b"}

通常,它應該顯示

Object {a:"a"}

http://jsfiddle.net/akbach/6u0qnrc6/4/中進行測試

console.log可能會顯示實時引用(無論如何console.log Chrome),而不是快照。 如果它是“折疊的”(必須單擊以展開詳細信息),它將繼續更新。

您可以通過運行代碼,然后在控制台中再次對其進行修改並查看先前的輸出來查看此內容。

console.log()方法接收對該對象的引用。 要通過單擊“ +”在控制台中打開對象,我們需要比調用func1方法更長的時間。 嘗試替換console.log(ctrl2.myvar); 使用console.log(JSON.stringify(ctrl2.myvar));

您的編碼工作正常。 這些選項在控制台中打印之前已更新。

嘗試執行以下步驟,打開控制台,粘貼以下代碼。

var ctrl1 = {
    func1: function(objct){
        objct.options.b = "b";
    }
}

var ctrl2 = {
    myvar : {options:{a:"a"}},
    func2: function(){
        console.log(ctrl2.myvar);
        debugger;
        ctrl1.func1(ctrl2.myvar);
    },
}

ctrl2.func2();

一旦代碼在調試器停止,您將在控制台中看到所需的結果,即:“ a”

現在恢復腳本執行。 之后,在控制台上編寫ctrl2.myvar ,然后您將看到帶有a和b的更新選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM