JS Proxy preventExtensions()

🌙
手机阅读
本文目录结构

handler.preventExtensions() 方法用于设置对Object.preventExtensions()的拦截

语法

var p = new Proxy(target, {
  preventExtensions: function(target) {
  }
});

参数

以下参数传递给 preventExtensions 方法. 它会绑定到这个handler.

target

所要拦截的目标对象.

返回值

preventExtensions 方法返回一个布尔值.

描述

handler.preventExtensions() 拦截 Object.preventExtensions()返回一个布尔值.

拦截

这个trap可以拦截这些操作:

约束

如果违反了下列规则, proxy则会抛出一个 TypeError:

  • 如果Object.isExtensible(proxy)falseObject.preventExtensions(proxy)只能返回true

示例

以下代码演示了如何拦截Object.preventExtensions()

var p = new Proxy({}, {
  preventExtensions: function(target) {
    console.log('called');
    Object.preventExtensions(target);
    return true;
  }
});

console.log(Object.preventExtensions(p)); // "called"
                                          // false

以下代码违反了约束.

var p = new Proxy({}, {
  preventExtensions: function(target) {
    return true;
  }
});

Object.preventExtensions(p); // 抛出类型错误

规范

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)[[PreventExtensions]] Standard Initial definition.
ECMAScript Latest Draft (ECMA-262)[[PreventExtensions]] Draft

参考


AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

目前重心已经放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>