在 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 编程最常见的问题之一是如何计算对象的键/属性的数量。
此教程介绍了几种有效的方法。
日期:2020-06-02 22:16:14 来源:oir作者:oir