2013-03-09 63 views
1

我面臨一個奇怪的情況。我正在向該方法發送一個參數。在接收端,我得到了不同的參數。JS:從函數接收的參數與實際參數不同

這是屏幕截圖。

enter image description here

JS代碼:

<script> 
var defaultOptions = { 
    chart:{ 
     "type":"series", 
     "container":"#container", 
     "width":700, 
     "height":500, 
     "margin":{ 
      "left":100 , top:50 , right:10 , "bottom":50 
     } 
    } 

}; 



var Util = { 
    /** 
    *@return true if the given object is an valid one. 
    */ 
    valid: function(obj){ 
     return obj !== undefined && obj !== null; 
    }, 
    /** 
    *@param a {object} to extend. 
    *@param b {object} 
    *@return {object} 
    */ 
    extend:function(a , b){ 
     var m; 
     if(!Util.valid(a)){ 
      a = {}; 
     } 
     for(m in b){ 
      a[m] = b[m]; 
     } 
     return a; 
    } 

}; 


function Chart(opt){ 
    console.log(opt); 
    /** 
    *Setting default chart options. 
    */ 
    Util.extend(opt , defaultOptions); 


} 


var ChartLite = {}; 

Util.extend(ChartLite , { 
    Chart:Chart 
}); 
</script> 

<script> 
$(function(){ 
    var chart = new ChartLite.Chart({}); 
}); 
</script> 

JS小提琴鏈接:http://jsfiddle.net/993Wu/15/

發送:{}。

預計:{}

+0

你在期待什麼? – 2013-03-09 10:33:59

+0

代碼中的哪個位置是打印的接收值? – Barmar 2013-03-09 10:35:16

+0

@Barmar,function Chart(opt){ console.log(opt); 圖表方法。 – kannanrbk 2013-03-09 10:38:42

回答

0

這是因爲console的輸出顯示你的對象的地位,因爲它現在是,不因爲它是當你叫console.log

獲取當前對象狀態的最佳方法是在輸出它之前將其輸入JSON.stringify();請注意,這將刪除所有函數和非JSON屬性。

+0

我浪費了30分鐘。我在調用'extend'方法之前打印。非常感謝。 – kannanrbk 2013-03-09 10:37:04