javascript - Object.keys在IE11中工作的解决方法是什么?

标签 javascript arrays object internet-explorer

我正在尝试使用在Object.keys for IE8上找到的以下功能



Object.keys = Object.keys || (function() {
  var hasOwnProperty = Object.prototype.hasOwnProperty,
    hasDontEnumBug = !{
      toString: null
    }.propertyIsEnumerable("toString"),
    DontEnums = [
      'toString',
      'toLocaleString',
      'valueOf',
      'hasOwnProperty',
      'isPrototypeOf',
      'propertyIsEnumerable',
      'constructor'
    ],
    DontEnumsLength = DontEnums.length;

  return function(o) {
    if (typeof o != "object" && typeof o != "function" || o === null)
      throw new TypeError("Object.keys called on a non-object");

    var result = [];
    for (var name in o) {
      if (hasOwnProperty.call(o, name))
        result.push(name);
    }

    if (hasDontEnumBug) {
      for (var i = 0; i < DontEnumsLength; i++) {
        if (hasOwnProperty.call(o, DontEnums[i]))
          result.push(DontEnums[i]);
      }
    }

    return result;
  };
})();





这是我尝试实现的方法:



var attributeCodeTextLength = Object.keys(item.versionRoomTypeAttributeList[0].attributeCode).length;
var attributeLimit = 7;
if (Object.keys(item.versionRoomTypeAttributeList[0].attributeCode).length > 2) {
  attributeLimit = 5;
  if (Object.keys(item.versionRoomTypeAttributeList[0].attributeCode).length > 3) {
    attributeLimit = 4;
  }
}





但是我一直收到以下错误:

TypeError: Object.keys: argument is not an Object

最佳答案

这是我发现使其起作用的Polyfill



Object.keys = function(obj) {
  var keys = [];

  for (var i in obj) {
    if (obj.hasOwnProperty(i)) {
      keys.push(i);
    }
  }

  return keys;
};

关于javascript - Object.keys在IE11中工作的解决方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56172409/

相关文章:

java - 编码bat Array2 ZeroMax

java - 从循环中获取数组元素

javascript - Javascript中的Node接口(interface)是一个对象吗?

javascript - 更新状态对象不会重新渲染动态创建的组件

javascript - 将 JavaScript 附加到 body 标签

javascript - onBlur() 无法正常工作

javascript - 我可以在 document.setcookie 中返回 document.getelementbyid 的值吗?

c - C语言可以返回一个结构体数组吗?

javascript - 将 JSON trim 为给定目标并获取所有父键

c++ - 用花括号 C++ 实例化一个对象