• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • handler.preventExtensions()

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

    语法

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

    参数

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

    target
    所要拦截的目标对象.

    返回值

    preventExtensions方法返回一个布尔值.

    描述

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

    拦截

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

    • Object.preventExtensions()
    • Reflect.preventExtensions()

    约束

    如果违反了下列规则, 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); // 抛出类型错误