0
我嘗試從Google Chrome(WebRTC框架)獲取事件對象的值。我的方法是這樣的:JSON.stringify生成空對象{}
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 (var i = 0; i<event.length; i++) result += (event[i] + event[event[i]]);
不重複?我是Javascript新手,很遺憾,如果我失去了一些東西。
中的示例這是爲了檢查?如果是這樣,也許你想使用'console.dir'(沒有字符串連接)而不是'console.log'? – 2016-12-04 16:04:15
Stringify僅會覆蓋擁有的可枚舉屬性,因此不會處理任何不符合該條件的對象的任何屬性。並且你寫道'for each'循環有效。我假設你實際上是指'for-in'循環的工作,而'for'不是。這是因爲'event'沒有'.length',它的屬性不是數字索引。 「for-in」循環是一個普通的屬性枚舉器,它訪問所有可枚舉的屬性,包括繼承的屬性。 – 2016-12-04 16:08:12
那麼我如何使用hasNext()的方法,因爲我不能在for-in循環中使用if(i
Phil