From 541e7f7510fb5eb89454d271cd89763263820a17 Mon Sep 17 00:00:00 2001 From: Christian Bewernitz Date: Tue, 11 Oct 2022 04:48:01 +0200 Subject: [PATCH] fix: Avoid iterating over prototype properties by no longer using the `in` operator. https://github.com/xmldom/xmldom/issues/436 --- lib/dom.js | 8 ++++---- lib/sax.js | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/dom.js b/lib/dom.js index 0bc123eaf..30c063a81 100644 --- a/lib/dom.js +++ b/lib/dom.js @@ -63,7 +63,7 @@ function arrayIncludes (list) { } function copy(src,dest){ - for(var p in src){ + for(var p of Object.keys(src)){ dest[p] = src[p]; } } @@ -552,7 +552,7 @@ Node.prototype = { var map = el._nsMap; //console.dir(map) if(map){ - for(var n in map){ + for(var n of Object.keys(map)){ if(map[n] == namespaceURI){ return n; } @@ -569,7 +569,7 @@ Node.prototype = { var map = el._nsMap; //console.dir(map) if(map){ - if(prefix in map){ + if(Object.prototype.hasOwnProperty.call(map, prefix)){ return map[prefix] ; } } @@ -1608,7 +1608,7 @@ function importNode(doc,node,deep){ // attributes:1,childNodes:1,parentNode:1,documentElement:1,doctype,}; function cloneNode(doc,node,deep){ var node2 = new node.constructor(); - for(var n in node){ + for(var n of Object.keys(node)){ var v = node[n]; if(typeof v != 'object' ){ if(v != node2[n]){ diff --git a/lib/sax.js b/lib/sax.js index 48d8cfe46..3100dd9b7 100644 --- a/lib/sax.js +++ b/lib/sax.js @@ -142,7 +142,7 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ if(endIgnoreCaseMach){ domBuilder.endElement(config.uri,config.localName,tagName); if(localNSMap){ - for(var prefix in localNSMap){ + for(var prefix of Object.keys(localNSMap)){ domBuilder.endPrefixMapping(prefix) ; } } @@ -493,7 +493,7 @@ function appendElement(el,domBuilder,currentNSMap){ if(el.closed){ domBuilder.endElement(ns,localName,tagName); if(localNSMap){ - for(prefix in localNSMap){ + for(prefix of Object.keys(localNSMap)){ domBuilder.endPrefixMapping(prefix) } } @@ -537,7 +537,7 @@ function fixSelfClosed(source,elStartEnd,tagName,closeMap){ //} } function _copy(source,target){ - for(var n in source){target[n] = source[n]} + for(var n of Object.keys(source)){target[n] = source[n]} } function parseDCC(source,start,domBuilder,errorHandler){//sure start with '