回答

收藏

JavaScript 对象的长度

技术问答 技术问答 607 人阅读 | 0 人回复 | 2023-09-11

我有一个 JavaScript 对象。这个对象的长度是否有内置或公认的最佳实践方法?5 i, D  Z" T0 s/ ~& D% ]& e
    const myObject = new Object();myObject["firstname"] = "Gareth";myObject["lastname"] = "Simpson";myObject["age"] = 21;
    % O6 a2 D/ k/ w+ _4 w
               7 v6 R8 X( O; f; f. H& v; Q# }
    解决方案:                                                                8 ?6 B4 I' ?: y& T6 d4 g, n, {
                                                                这是 2016年的更新和 ES广泛部署更高版本。    对于 IE所有其他支持 ES你可以使用5  现代浏览器Object.keys()上述代码:5 _) D1 D$ |/ C- I7 j. Y7 P
    var size = Object.keys(myObj).length;( b& |+ G# }. j7 W4 ^
Object.keys()因为现在是内置的,所以没有必要修改任何现有的原型。
5 Q. Q3 q- X! @2 i编辑:对象可以具有无法通过 Object.key 方法返回的符号属性。因此,如果不提及,答案将是不完整的。% H/ G) u: P) y% n+ }, K2 ?
为了创建对象属性,将符号类型添加到语言中。Symbol 类型的主要优点是防止覆盖。3 H( M1 b. c! q  M4 P1 j" u( b8 l
Object.keys或Object.getOwnPropertyNames不适用于符号属性。你需要使用它们才能返回它们。Object.getOwnPropertySymbols.
, E& I4 X) T7 z! |3 P

    ; Y2 I- r7 {3 L1 Z# z4 g
  • var person = {  [Symbol('nameJohn Doe', [Symbol('age')]: 33, "occupation": &quotrogrammer"};const propOwn = Object.getOwnPropertyNames(person);console.log(propOwn.length); // 1let propSymb = Object.getOwnPropertySymbols(person);console.log(propSymb.length); /code]较旧的答案最可靠的答案是:[code]Object.size = function(obj) {  var size = 0,   key;  for (key in obj) {    if (obj.hasOwnProperty(key)) size  ;  } return size;};// Get the size of an objectconst myObj = {}var size = Object.size(myObj);
    6 A6 r5 L; y) o5 c# L' P/ B
JavaScript 有一个协议,你不应该去 Object.prototype 添加东西,因为它会破坏各种库中的枚举。然而,向 Object 添加方法通常是安全的。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则