if (!Object.keys) Object.keys = function(o) {
if (o !== Object(o))
throw new TypeError('Object.keys called on a non-object'); //判断是否为对象,注意 !== 符号
var k=[],p;
for (p in o) if (Object.prototype.hasOwnProperty.call(o,p)) k.push(p); //利用Object.prototype.hasOwnProperty 来避免原生的hasOwnProperty被覆盖
return k;
}
//针对Object.keys的polyfill问题可参考 //@see http://tokenposts.blogspot.com/2012/04/javascript-objectkeys-browser.html