OSDN Git Service

Version 0.6.52, fix X.UI.
[pettanr/clientJs.git] / 0.6.x / js / core / 00_builtin.js
index e49582f..496c533 100644 (file)
@@ -228,7 +228,7 @@ Object.prototype.hasOwnProperty || (Object.prototype.hasOwnProperty = function(
                var proto = this.constructor && this.constructor.prototype,\r
                        __p__ = proto && proto.__proto__,\r
                        v     = this[ p ],\r
-                       r = false;\r
+                       r     = false;\r
                \r
                if( __p__ ) proto.__proto__ = null;\r
                \r
@@ -236,24 +236,48 @@ Object.prototype.hasOwnProperty || (Object.prototype.hasOwnProperty = function(
                        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; // proto で定義されていた.\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
-                               r = true;\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
-                               \r
                                proto[ p ] = v;\r
+                       } else {\r
+                               r = true;\r
+                       };\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 ) ^ isNaN ){ //true + false, false + true\r
+                               // this と proto に同名で同値が書かれている可能性あり\r
+                               proto[ p ] = v + ' '; // different value\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