JS:从函数接收的参数与实际参数不同

问题描述:

我面临一个奇怪的情况。我正在向该方法发送一个参数。在接收端,我得到了不同的参数。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

这是因为console的输出显示你的对象的地位,因为它现在是,不因为它是当你叫console.log

获取当前对象状态的最佳方法是在输出它之前将其输入JSON.stringify();请注意,这将删除所有函数和非JSON属性。

+0

我浪费了30分钟。我在调用'extend'方法之前打印。非常感谢。 – kannanrbk 2013-03-09 10:37:04