Ver Fonte

Check hasOwnProperty during Hash iteration, following haxedev discussion.

Bruno Garcia há 13 anos atrás
pai
commit
782902b957
2 ficheiros alterados com 14 adições e 4 exclusões
  1. 7 2
      std/js/_std/Hash.hx
  2. 7 2
      std/js/_std/IntHash.hx

+ 7 - 2
std/js/_std/Hash.hx

@@ -51,8 +51,13 @@
 	}
 
 	public function keys() : Iterator<String> {
-		var a = new Array<String>();
-		untyped __js__("for(var i in this.h) a.push(i.substr(1))");
+		var a = [];
+		untyped {
+			__js__("for( var key in this.h ) {");
+				if( h.hasOwnProperty(key) )
+					a.push(key.substr(1));
+			__js__("}");
+		}
 		return a.iterator();
 	}
 

+ 7 - 2
std/js/_std/IntHash.hx

@@ -50,8 +50,13 @@
 	}
 
 	public function keys() : Iterator<Int> {
-		var a = new Array();
-		untyped __js__("for( var x in this.h ) a.push(x|0)");
+		var a = [];
+		untyped {
+			__js__("for( var key in this.h ) {");
+				if( h.hasOwnProperty(key) )
+					a.push(key|0);
+			__js__("}");
+		}
 		return a.iterator();
 	}