Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript stringify生成空对象{}_Javascript_Json_Object_Webrtc - Fatal编程技术网

Javascript stringify生成空对象{}

Javascript stringify生成空对象{},javascript,json,object,webrtc,Javascript,Json,Object,Webrtc,我试图从GoogleChrome(WebRTC框架)获取事件对象的值。我的方法如下所示: yourConnection.onicecandidate = function (event) { console.log("onicecandidate called on my side with event: " + JSON.stringify(event, null, 4)); //that last line produces {} var result =

我试图从GoogleChrome(WebRTC框架)获取事件对象的值。我的方法如下所示:

yourConnection.onicecandidate = function (event) {
    console.log("onicecandidate called on my side with event: "
        + JSON.stringify(event, null, 4)); //that last line produces {}

    var result = "";
    for (var key in event) {
        result += (key + " : " + event[key]);
    }
    console.log(result);
    //...
}
虽然JSON.stringify不起作用,但循环会产生如下结果

  candidate : [object RTCIceCandidate], NONE : 0, CAPTURING_PHASE : 1, AT_TARGET : 2, BUBBLING_PHASE : 3, MOUSEDOWN : 1, MOUSEUP : 2, MOUSEOVER : 4, MOUSEOUT : 8, MOUSEMOVE : 16, MOUSEDRAG : 32, CLICK : 64, DBLCLICK : 128, KEYDOWN : 256, KEYUP : 512, KEYPRESS : 1024, DRAGDROP : 2048, FOCUS : 4096, BLUR : 8192, SELECT : 16384, CHANGE : 32768, type : icecandidate, target : [object RTCPeerConnection], currentTarget : [object RTCPeerConnection], eventPhase : 2, bubbles : false, cancelable : false, defaultPrevented : false, timeStamp : 246.52, path : , srcElement : [object RTCPeerConnection], returnValue : true, cancelBubble : false, stopPropagation : function stopPropagation() { [native code] }, stopImmediatePropagation : function stopImmediatePropagation() { [native code] }, preventDefault : function preventDefault() { [native code] }, initEvent : function initEvent() { [native code] }, composed : false, composedPath : function composedPath() { [native code] }, 
我真的不想让事情变得复杂,并使用递归来获取属性的子属性。那么,是否没有办法以一种好的、干净的方式输出对象的属性呢?为什么JSON.stringify会给我一个空对象

另外,为什么我只能使用for each循环遍历对象,而

 for (var i = 0; i<event.length; i++) result += (event[i] + event[event[i]] );

for(var i=0;i事件很可能没有WebIDL JSON序列化程序。

如果您只对onicecandidate感兴趣,那么应该在event.candidate上调用JSON.stringify(它可能不存在以表示候选项的结束)--另请参见

中的示例,这是为了检查?如果是这样,您可能希望使用
console.dir
(不使用字符串串联)Stringify将只到达拥有的、可枚举的属性,而不是
console.log
,因此任何对象的任何不符合该条件的属性都不会被处理。您写道,每个
循环都有
工作。我想您实际上是指
for in
循环工作,而
for
循环不工作。这是因为
event
没有
.length
,其属性不是数字索引。in
循环的
是一个通用属性枚举器,它访问所有可枚举属性,包括继承的属性。那么如何使用hasNext(),因为我不能使用if(Ifor
循环。您仍然需要递归处理嵌套对象,但这并不复杂。