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
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