var size = Object.keys(myObj).length;' W4 \( l- x* C4 W3 M
Object.keys()因为现在是内置的,所以没有必要修改任何现有的原型。5 x5 B& p" Z" V B 编辑:对象可以具有无法通过 Object.key 方法返回的符号属性。因此,如果不提及,答案将是不完整的。 & |2 {$ W, t8 [; O# ~6 z* M为了创建对象属性,将符号类型添加到语言中。Symbol 类型的主要优点是防止覆盖。 & _/ N# f t$ r& |9 g3 lObject.keys或Object.getOwnPropertyNames不适用于符号属性。你需要使用它们才能返回它们。Object.getOwnPropertySymbols. 1 g+ l. l& @- @( [/ W; ?
. Q' ? z0 J8 R/ Z4 o; J* L* Z8 {
var person = { [Symbol('nameJohn Doe', [Symbol('age')]: 33, "occupation": "rogrammer"};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);0 Y8 ~( Z, P5 n7 P- h W