JavaScript - Reflect.preventExtensions() 方法
Reflect.preventExtensions() 方法用于阻止向对象添加新属性。它的工作原理与 Object.preventExtensions() 方法类似,但它是 Reflect 对象的一部分,Reflect 对象提供了一种更一致、更标准化的对象操作方式。
如果您想确保对象在创建后无法更改,可以使用 Reflect.preventExtensions() 方法。这在您想要确保对象的某些属性保持不变,或者想要保护对象不被外部代码修改的情况下非常有用。
语法
以下是 JavaScript Reflect.preventExtensions() 方法的语法 -
Reflect.preventExtensions(target)
参数
此方法仅接受一个参数。下文将对此进行描述 -
target - 需要阻止扩展的对象。
返回值
此方法返回布尔值,指示目标对象是否已成功设置为不可扩展。
示例
示例 1
让我们看以下示例,其中对象最初是可扩展的,之后我们使用 Reflect.preventExtensions() 并观察输出。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
let x = {
a: 11
};
document.write(Reflect.isExtensible(x) + " < br > ");
Reflect.preventExtensions(x); document.write(Reflect.isExtensible(x));
</script>
</body>
</html>
如果我们执行上述程序,它将在网页上显示一段文本。
示例 2
考虑另一种情况,我们将在阻止扩展后添加一个新属性。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
let x = {
a: 11
};
Reflect.preventExtensions(x);
x.b = 234;
document.write(JSON.stringify(x));
</script>
</body>
</html>
执行上述脚本后,网页上将显示一段文本。
示例 3
在下面的示例中,我们将修改现有属性。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
let x = {
a: 11
};
Reflect.preventExtensions(x);
x.a = 50;
document.write(JSON.stringify(x));
</script>
</body>
</html>
执行上述脚本后,输出窗口将会弹出,并在网页上显示文本。
示例 4
以下示例将删除一个现有属性。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
let x = {
a: 1234
};
Reflect.preventExtensions(x);
delete x.a;
document.write(JSON.stringify(x));
</script>
</body>
</html>
运行上述脚本后,它将生成由网页上的空对象组成的输出。

