对象反思&枚举 - JavaScript

时间:2015-10-27 10:02:10

标签: javascript reflection enumeration

我目前正在阅读Douglas Rockford的" JavaScript The Good Parts" ,我发现了以下两个主题:

  1. 反射
  2. 枚举
  3. 根据这本书:

      

    通过尝试检索属性并检查获得的值,可以轻松检查对象以确定它具有哪些属性.typeof运算符对于确定属性的类型非常有用。

    虽然我理解了所说的内容,但我们可以使用对象反射来基本上查看它包含的所有属性和值。有点像从产品背面读取成分,看看它究竟是由什么制成的。

    我的问题是为什么以及如何?为什么我需要使用对象Reflection,在什么情况下使用它有什么好处以及Enumeration如何连接?反射与反射之间的联系是什么?枚举吗

    提前致谢。

1 个答案:

答案 0 :(得分:0)

在JS中,对象通常以非常动态的方式创建。请看下面的代码段。

动态创建的对象数组。

    var persons = [{
      name: "Peter",
      age: 20
    },{
      name: "Fox",
      ages: "21"},
      ,{
      name: "Fox",
      age: "21"}
    ]

用作过滤器的对象。

var types={
    name: "string",
    age:"number"
}

检查人员中的每个对象是否具有属性名称和年龄。 Object.keys返回对象属性的Array。

在其他语言中,这比这一个班轮更复杂。

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。

祝你好运