1. if (!Object.keys) {
    2. Object.keys = function (o) {
    3. if (o !== Object(o)) { throw TypeError('Object.keys called on non-object'); }
    4. var ret = [], p;
    5. for (p in o) {
    6. // 检测一个对象是否含有特定的自身属性
    7. // 忽略掉那些从原型链上继承到的属性
    8. if (Object.prototype.hasOwnProperty.call(o, p)) {
    9. ret.push(p);
    10. }
    11. }
    12. return ret;
    13. };
    14. }