OSDN Git Service

Version 0.6.56, working X.UI.Event.Tap.
[pettanr/clientJs.git] / 0.6.x / js / core / 00_builtin.js
index 3f8f676..496c533 100644 (file)
@@ -226,41 +226,58 @@ if (window.ActiveXObject ? !Number.prototype.toFixed : (!navigator.taintEnabled
 /*\r
 Object.prototype.hasOwnProperty || (Object.prototype.hasOwnProperty = function( p ){\r
                var proto = this.constructor && this.constructor.prototype,\r
-                       __p__ = proto && ( '__proto__' in proto ) && proto.__proto__,\r
+                       __p__ = proto && proto.__proto__,\r
                        v     = this[ p ],\r
-                       nan   = v !== v, // isNaN\r
-                       r = false, save;\r
+                       r     = false;\r
                \r
-               if( __p__ ) proto.__proto__ = v === null ? undefined : null;\r
+               if( __p__ ) proto.__proto__ = null;\r
                \r
-               if( nan ){\r
-                       if( proto[ p ] !== proto[ p ] ){ // proto is NaN\r
-                               proto[ p ] = 0; // different value\r
-                               r = this[ p ] !== this[ p ]; // isNaN\r
-                               proto[ p ] = NaN; // proto で定義されていた.\r
+               if( p in this ){\r
+                       if( v !== v ){\r
+                               if( proto && ( p in proto ) && proto[ p ] !== proto[ p ] ){ // proto[ p ] is NaN\r
+                                       proto[ p ] = 0; // different value\r
+                                       r = this[ p ] !== this[ p ]; // isNaN?\r
+                                       proto[ p ] = v; // set NaN\r
+                               } else {\r
+                                       r = true;\r
+                               };\r
+                       } else\r
+                       if( proto && p in proto && proto[ p ] === v ){\r
+                               // this と proto に同名で同値が書かれている可能性あり\r
+                               proto[ p ] = v + ' '; // different value\r
+                               r = v === this[ p ];\r
+                               proto[ p ] = v;\r
                        } else {\r
                                r = true;\r
                        };\r
-               } else\r
+               };\r
+               \r
+               if( __p__ ) proto.__proto__ = __p__;\r
+               \r
+               return r;\r
+  }); */\r
+/*\r
+Object.prototype.hasOwnProperty || (Object.prototype.hasOwnProperty = function( p ){\r
+               var proto = this.constructor && this.constructor.prototype,\r
+                       __p__ = proto && proto.__proto__,\r
+                       v     = this[ p ],\r
+                       isNaN = v !== v;\r
+                       r     = false;\r
+               \r
+               if( __p__ ) proto.__proto__ = null;\r
+               \r
                if( p in this ){\r
-                       if( !proto || !( p in proto ) || ( proto[ p ] !== v ) ){\r
-                               r = true;\r
-                       } else {\r
+                       if( proto && p in proto && ( proto[ p ] === v ) ^ isNaN ){ //true + false, false + true\r
                                // this と proto に同名で同値が書かれている可能性あり\r
-                               save = proto[ p ];\r
                                proto[ p ] = v + ' '; // different value\r
-                               r = v === this[ p ];\r
-                               \r
-                               delete proto[ p ];\r
-                       \r
-                               if( proto[ p ] !== v ){\r
-                                       // proto で定義されていた.\r
-                                       proto[ p ] = save;                              \r
-                               };\r
+                               r = ( v === this[ p ] ) ^ isNaN; // true + false, false + true\r
+                               proto[ p ] = v;\r
+                       } else {\r
+                               r = true;\r
                        };\r
                };\r
                \r
                if( __p__ ) proto.__proto__ = __p__;\r
                \r
                return r;\r
-  });*/\r
+  }); */
\ No newline at end of file