Kaynağa Gözat

fix in fields() (again)

Nicolas Cannasse 19 yıl önce
ebeveyn
işleme
a437719648
1 değiştirilmiş dosya ile 9 ekleme ve 5 silme
  1. 9 5
      std/Reflect.hx

+ 9 - 5
std/Reflect.hx

@@ -268,20 +268,24 @@ class Reflect {
 			return a;
 		#else js
 			var a = new Array();
-			var t;
-			try{ t = o.__proto__; }catch(e : Dynamic){ t = null; }
-			if( t != null ) {
+			if( untyped o.hasOwnProperty ) {
 				untyped __js__("
 					for(var i in o)
-						if( o[i] !== t[i] && i != \"__proto__\" )
+						if( o.hasOwnProperty(i) )
 							a.push(i);
 				");
 			} else {
+				var t;
+				try{ t = o.__proto__; } catch( e : Dynamic ) { t = null; }
+				if( t != null )
+					o.__proto__ = null;
 				untyped __js__("
 					for(var i in o)
-						if( o.hasOwnProperty(i) )
+						if( i != \"__proto__\" )
 							a.push(i);
 				");
+				if( t != null )
+					o.__proto__ = t;
 			}
 			return a;
 		#else neko