Object.is方法的polyfill
随笔
if (!Object.is) { Object.defineProperty(Object, 'is', { value: function(x, y) { if (x === y) { // 需要辨别+0与-0(用"==="比较+0和-0会是true,但实际应该为false), // 所以,在下面的判断中, // 如果x和y不为0,则返回true; // 如果x和y为0,则用 1/x(Infinity/-Infinity) 比较 1/y(Infinity/-Infinity)做比较; return x !== 0 || 1 / x === 1 / y; } // 在使用"==="比较时,NaN跟NaN是不等的, // 所以这个单独对NaN的情况进行判断 return x !== x && y !== y; }, }); }