javascript - JavaScript中反射的概念是什么?
问题描述
任何人都可以用人类语言和简单的例子解释它(反射和内置的反射对象)是如何在 JS 中工作的。
维基百科:“在计算机科学中,反射是计算机程序在运行时检查、内省和修改其自身结构和行为的能力”。
解决方案
反射是元编程的一部分。
元编程是一种编程技术,其中计算机程序具有将程序视为数据的能力。这意味着一个程序可以被设计为读取、生成、分析或转换其他程序,甚至在运行时修改自身。
所以反射的概念是,就像我们在镜子里看到自己的倒影一样:我们可以看到没有它就看不到的东西,例如:我们的头发、嘴唇、舌头等。
简而言之,如果一个方法或一个类调用这个反射的东西,它可以看到它不知道的对象,例如:实例变量,该类具有的方法列表,以及其他属性,什么类调用了这个方法。
这在我们进行元编程时很有用。作为方法或类应该知道他们(甚至作者)知识之外的事情。
具体示例:假设水和杯子。如果你想对水物理进行编程以适应杯子,有很多方法。假设您与 100 位其他开发人员一起工作,并且不知道他们会想出什么样的容器(有人最终可能会得到一个湖泊甚至河流),而您选择了元编程风格。你有班水,班杯。您的水类必须了解杯子的属性,例如:最大体积、重量、曲线,甚至最高/最低温度。
结果:每当有人调用类水时,您不必将这些信息作为参数插入,因为如果它们的数量增加,可能很难跟踪。
(我不确定这是否是一个足够好的例子和解释,所以如果你突然想到,请评论一个更好的例子)
推荐阅读
- python - 使用python从二进制图像中裁剪感兴趣区域
- python - 为什么有时我必须在 Pandas 中提供数据集的完整路径才能读取它,而有时它仅通过提供数据集文件名来工作?
- java - 将 FFT 算法添加到 android studio
- php - 我无法在 laravel 帮助文件中“使用”或“命名空间”
- c# - SQL 和 C#:ExecuteNonQuery:连接属性尚未初始化
- excel - Excel VBA + 列出所有映射的网络驱动器和网络快捷方式/位置
- ngrx - StoreModule.forRoot() - 如何在没有附加键的情况下返回对象
- javascript - 使用 lodash 按嵌套属性对对象数组进行排序
- java - 搜索将对象之间的双向链接转换为 JSON 格式的正确方法
- batch-file - 将变量保存在文本文件中