对象反射和枚举 - JavaScript

3
我目前正在阅读Douglas Rockford的《JavaScript精粹》,其中提到以下两个主题:
  1. 反射
  2. 枚举
根据书中所说: 通过尝试检索属性并检查所获得的值,可以轻松地检查对象以确定它具有哪些属性。typeof运算符在确定属性类型方面非常有帮助。 虽然我理解了这句话的意思,即我们可以使用对象反射来查看它包含的所有属性和值。就像从产品背面读取成分一样,以了解它的具体成分。 我的问题是为什么和如何?在什么情况下需要使用对象反射,使用它的优点是什么,以及枚举如何连接?反射和枚举之间的联系是什么? 谢谢。
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
1
在JS中,对象经常以非常动态的方式创建。看一下以下代码片段。 一个动态创建对象的数组。
    var persons = [{
      name: "Peter",
      age: 20
    },{
      name: "Fox",
      ages: "21"},
      ,{
      name: "Fox",
      age: "21"}
    ]
一个被用作过滤器的对象。
var types={
    name: "string",
    age:"number"
}

每个 persons 对象都会被检查是否具有 name 和 age 属性。Object.keys 返回对象属性的数组。

在其他语言中,这比这个一行代码要复杂得多。

console.log(persons.filter(function(person){
  return Object.keys(person).filter(function(property){
    return types[property] && typeof person[property] === types[property];
  }).length === requiredProps.length;
}));
此外,所需类型 - 字符串和数字也会进行检查。 但为什么呢?有不同的情况,例如在 Web 应用程序内,您需要检查用户是否指定了某些必需的输入。而且在编程中,您经常需要对数组中的对象进行操作。因此,数组函数 filter、reduce 和 map 经常用于将某些输入转换为某些输出。无论是用于函数还是一些服务器 API。 敬礼

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,