Javascript 简明教程
JavaScript - The Reflect Object
JavaScript Reflect
在 JavaScript 中, Reflect 是一个全局对象,并且在 ECMAScript 6 (ES6) 引入。它包含静态方法,提供了在运行时与对象进行交互的更好方法。
与大多数全局对象不同,Reflect 不是一个构造函数。不能将它与 new 运算符一起使用或将 Reflect 对象调用为一个函数。Reflect 的所有方法都是静态的,就像 Math 对象一样。
它包含各种方法,供在运行时访问、更新、删除等对象属性。
Reflect Methods
在下面的表格中,我们列出了 Reflect 的所有方法 −
Sr.No. |
Name & Description |
1 |
apply() To invoke a function. |
2 |
construct() 允许指定不同的原型。 |
3 |
defineProperty() 允许插入或编辑对象属性。 |
4 |
deleteProperty() 允许删除对象属性。 |
5 |
get() 获取属性值。 |
6 |
getOwnPropertyDescriptor() 允许获取对象的描述符。 |
7 |
getPrototypeOf() 获取对象的原型。 |
8 |
has() 检查属性是否存在于对象中。 |
9 |
isExtensible() 允许检查对象是否可扩展。 |
10 |
ownKeys() 返回目标对象的自身键,忽略继承的键。 |
11 |
preventExtensions() 防止对象的扩展。 |
12 |
set() 将值设置为对象属性。 |
13 |
setPrototypeOf() 允许将对象的原型设置为 null 或另一个对象。 |
Examples
Example 1
在以下示例中,我们定义了一个汽车对象。'prop' 变量以字符串格式包含属性名称。
我们使用 Reflect 对象的 get() 方法从汽车对象中访问 'model' 属性。我们传入对象名称作为 get() 方法的第一个参数,属性名称作为第二个参数。
在输出中,您可以看到 'model' 属性的值。
<html>
<body>
<div id="output">The model of the car is: </div>
<script>
const car = {
name: "Audi",
model: "Q6",
price: 7000000,
}
let prop = "model";
let model = Reflect.get(car, prop);
document.getElementById("output").innerHTML += model;
</script>
</body>
</html>
The model of the car is: Q6
Example 2
在以下示例中,我们使用 set() 方法将属性设置到对象中。set() 方法将对象、属性名称和值作为参数。
输出显示了 'doors' 属性值。通过这种方式,您可以使用 Reflect API 的 set() 方法在运行时将属性设置到对象中。
<html>
<body>
<div id="output">The total doors in the Audi Q6 is: </div>
<script>
const car = {
name: "Audi",
model: "Q6",
price: 7000000,
}
const model = Reflect.set(car, "doors", 4);
document.getElementById("output").innerHTML += car.doors;
</script>
</body>
</html>
The total doors in the Audi Q6 is: 4
在执行上面脚本后,输出窗口将弹出,显示网页上的文本。
Example 3
在以下示例中,我们使用 has() 方法动态检查特定属性是否存在于对象中。
这两个符号看起来很相似,但是是不同的,你可以从输出中看到。
<html>
<body>
<p id="output"></p>
<script>
const car = {
name: "Audi",
model: "Q6",
price: 7000000,
}
const isName = Reflect.has(car, "name");
if (isName) {
document.getElementById("output").innerHTML = "The Car object contains the name.";
}
</script>
</body>
</html>
The Car object contains the name.