在 JavaScript 中定义对象

JavaScript 对象通常用于存储不同数据和更复杂实体的键控集合。

在 JavaScript 中,对象涉及语言的所有组件;因此,我们需要在开始学习时立即了解它们。

对象是用数字括号 {…} 生成的,并且应该有一个属性列表。
属性是一个“键:值”,其中键或者属性名称是一个字符串,值可以是任意值。

解决方案1

计算对象的键/属性的最快方法是使用以下代码:

let myobj = {
  siteName: 'onitroad',
  bookName: 'Javascript',
};
let count = 0;
for (key in myobj){
  if (myobj.hasOwnProperty(key)) {
    count++;
  }
}
console.log(count);

解决方案2

另一个有效的解决方案是使用以下代码:

Object.keys(obj).length
let myobj = {
  siteName: 'onitroad',
  bookName: 'Javascript',
 };
console.log(Object.keys(myobj).length);

此代码在内部迭代用于计算临时数组的键。
它还返回其长度。

这段代码的主要优点是干净且可读。
但是由于创建数组,可能会有内存开销。

解决方案3

下一个解决方案是优化 for 循环。

由于函数开销,for 循环中最慢的部分是 .hasOwnProperty() 调用。

因此,无论何时我们想要获取 JSON 对象的条目数,当我们知道没有任何内容可以扩展 Object.prototype 时,我们可以跳过 .hasOwnProperty() 调用。

否则,代码可能会通过转换本地键(var key)并应用前缀增量运算符(++count)而不是后缀来稍微优化。

让我们在下面的示例中演示它:

let myobj = {
  siteName: 'onitroad',
  bookName: 'Javascript',
 };
let count = 0;
for (let key in myobj){
  if (myobj.hasOwnProperty(key)) {
    ++count;
  }
}
console.log(count);

还有另一种选择,它依赖于捕获 hasOwnProperty 方法,如下所示:

let myobj = {
  siteName: 'onitroad',
  bookName: 'Javascript',
};
let hasOwn = Object.prototype.hasOwnProperty;
let count = 0;
for (let key in myobj) {
  if (hasOwn.call(myobj, key)) {
    ++count;
  }
}
console.log(count);

并且,在 JavaScript 中计算对象的键/属性数量的最终解决方案如下:

let myObj = new Object();
Object.defineProperty(myObj, "nonEnumerableProp", {
  enumerable: false
});
Object.defineProperty(myObj, "enumerableProp", {
  enumerable: true
});
console.log(Object.getOwnPropertyNames(myObj).length); //outputs 2
console.log(Object.keys(myObj).length); //outputs 1
console.log(myObj.hasOwnProperty("nonEnumerableProp")); //outputs true
console.log(myObj.hasOwnProperty("enumerableProp")); //outputs true
console.log("nonEnumerableProp" in myObj); //outputs true
console.log("enumerableProp" in myObj); //outputs true
JavaScript 如何计算对象的键/属性的数量

使用 JavaScript 编程最常见的问题之一是如何计算对象的键/属性的数量。

此教程介绍了几种有效的方法。

日期:2020-06-02 22:16:14 来源:oir作者:oir