Js reflect,js 反射 reflect

  Js reflect,js 反射 reflect

  

语义

  反映是一个内置的对象,它提供拦截Java脚本语言操作的方法。这些方法与处理器对象的方法相同反思。不是一个函数对象,因此它是不可构造的。

  

描述

   与大多数全局对象不同,反映没有构造函数。你不能将其与一个新的运算符一起使用,或者将显示对象作为一个函数来调用反思。的所有属性和方法都是静态的(就像数学对象)。

  

兼容性

  铬合金:49

  火狐(壁虎):42

  其他浏览器暂未实现

  目标

  目标函数。

  这个论点

  目标

  函数调用时绑定的这对象。

  参数列表

  目标函数调用时传入的实参列表,该参数应该是一个类数组的对象。

  

句法

  Reflect.apply()

  静态方法Reflect.apply()通过指定的参数列表发起对目标(目标)函数的调用。

  Reflect.apply(Math.floor,undefined,[1.75]);

  //1;

  反思。应用(字符串。from charcode,undefined,[104,101,108,108,111]);

  //你好

  反思。应用(正则表达式。原型。exec,/ab/,[confabulation]).指数;

  //4

  Reflect.apply().charAt,”小马,[3]);

  //我Reflect.construct()

  Reflect.construct()方法的行为有点像新的操作符构造函数,相当于运行新目标(.args)。

  var d=Reflect.construct(Date,[1776,6,4]);

  日期的实例;//真

  d。获取整年();//1776Reflect.defineProperty()

  Reflect.defineProperty()是一个静态的方法,看起来像Object.defineProperty()但是它返回一个布尔值

  const object 1={ };

  如果(反思。定义属性(对象1,“属性1”,{值:42 }){

  console.log(property1已创建!);

  //预期输出:"属性1已创建!"

  }否则{

  console.log("创建属性一时出现问题");

  }

  控制台。日志(对象1。房产1);

  //预期产量:42Reflect.deleteProperty()

  静态方法Reflect.deleteProperty()允许用于删除属性。它很像删除操作员,但它是一个函数Reflect.deleteProperty属性允许你删除一个对象上的属性。返回一个布尔代数学体系的值表示该属性是否被成功删除。它几乎与非严格的删除运算符相同。

  var obj={ x: 1,y:2 };

  Reflect.deleteProperty(obj, x );//真

  obj//{ y: 2 }

  var arr=[1,2,3,4,5];

  Reflect.deleteProperty(arr, 3 );//真

  arr//[1,2,3,5]

  //如果属性不存在,返回真实的

  Reflect.deleteProperty({}, foo );//真

  //如果属性不可配置,返回错误的

  反思。删除属性(对象。冻结({ foo:1 }), foo );//falseReflect.get()

  Reflect.get()方法的工作方式,就像从对象(目标[属性关键字])中获取属性,但它是作为一个函数执行的。

  //对象

  var obj={ x: 1,y:2 };

  Reflect.get(obj, x );//1

  //数组

  Reflect.get([zero , one],1);//一

  //带有得到处理程序的代理

  var x={ p:1 };

  var obj=新代理(x,{

  get(t,k,r) {

  返回k吧

  },

  });

  Reflect.get(obj, foo );//foobarReflect.getOwnPropertyDescriptor()

  静态方法反思。getownpropertydescriptor()与对象。getownpropertydescriptor()方法相似。如果在对象中存在,则返回给定的属性的属性描述符。否则返回未定义。

  反思。getownpropertydescriptor({ x: hello }, x );

  //{value:你好,可写:真的,可枚举:真的,可配置:true}

  反思。getownpropertydescriptor({ x: hello }, y );

  //未定义

  反思。getownpropertydescriptor([], length );

  //{值:0,可写:真,可枚举:假,可配置:假}Reflect.getPrototypeOf()

  静态方法Reflect.getPrototypeOf()与Object.getPrototypeOf()方法是一样的。都是返回指定对象的原型(即,内部的[[原型]]属性的值)。

  反思。getprototypeof({ });//对象。草案

  反思。getprototypeof(对象。原型);//null

  反思。getprototypeof(对象。create(null));//nullReflect.has()

  静态方法Reflect.has()作用与在操作符相同。

  Reflect.has({ x: 0 }, x );//真

  Reflect.has({ x: 0 }, y );//假

  //如果该属性存在于原型链中,返回真实的

  Reflect.has({ x: 0 }, toString );

  //代理对象的。有()句柄方法

  obj=新代理(

  {},

  {

  has(t,k) {

  返回k .以( door )开头;

  },

  }

  );

  Reflect.has(obj,门铃);//真

  Reflect.has(obj,宿舍);//falseReflect.isExtensible()

  静态方法Reflect.isExtensible()判断一个对象是否可扩展(即是否能够添加新的属性)。与它Object.isExtensible()方法相似,但有一些不同,详情可见差异。

  Reflect.isExtensible(target)

  //新对象是可扩展的。

  var empty={ };

  Reflect.isExtensible(空);//===真

  //.但是这可以改变。

  Reflect.preventExtensions(空);

  Reflect.isExtensible(空);//===false

  //根据定义,密封对象是不可扩展的。

  var sealed=对象。印章({ });

  Reflect.isExtensible(密封);//===false

  //根据定义,冻结的对象也是不可扩展的。

  var冻结=对象。冻结({ });

  Reflect.isExtensible(冻结);//===false

  //diff Object.isExtensible

  反思。是可扩展的(1);

  //TypeError: 1不是对象

  对象。是可扩展的(1);

  //falseReflect.ownKeys()

  静态方法Reflect.ownKeys()返回一个由目标对象自身的属性键组成的数组。

  常量对象1={

  物业1: 42,

  物业2: 13,

  };

  var数组1=[];

  控制台。日志(反映。ownkeys(对象1));

  //预期的输出:数组[属性1 ,属性2]

  控制台。日志(反映。拥有密钥(数组1));

  //预期输出:数组[长度]

  Reflect.ownKeys({ z: 3,y: 2,x:1 });//[ z , y , x ]

  反思。自己的密钥([]);//[长度]

  var sym=符号。for(彗星);

  var sym 2=符号。for(‘流星’);

  var obj={

  [sym]: 0,

  字符串:0,

  773: 0,

  0: 0,

  [sym2]: 0,

  -1: 0,

  8: 0,

  第二个字符串:0,

  };

  反思。拥有密钥(obj);

  //[ 0 , 8 , 773 , str ,-1 ,第二str ,符号(彗星),符号(流星)]

  //以数字顺序排列的索引,

  //按插入顺序排列的字符串,

  //按插入顺序排列的符号Reflect.preventExtensions()

  静态方法Reflect.preventExtensions()方法阻止新属性添加到对象例如:防止将来对对象的扩展被添加到对象中)。该方法与Object.preventExtensions()相似,但有一些不同点。

  //默认情况下,对象是可扩展的。

  var empty={ };

  Reflect.isExtensible(空);//===真

  //.但是这可以改变。

  Reflect.preventExtensions(空);

  Reflect.isExtensible(空);//===false

  //diff Object.preventExtensions()

  反思。防止扩展(1);

  //TypeError: 1不是对象

  对象。防止扩展(1);

  //1Reflect.set()

  静态方法Reflect.set()工作方式就像在一个对象上设置一个属性。

  //对象

  var obj={ };

  Reflect.set(obj, prop , value );//真

  道具;//值

  //数组

  var arr=[鸭,鸭,鸭];

  Reflect.set(arr,2, goose );//真

  arr[2];//鹅

  //它可以截断数组。

  Reflect.set(arr, length ,1);//真

  arr//[鸭子];

  //只有一个参数,propertyKey和值是"未定义的"。

  var obj={ };

  反思。set(obj);//真

  反思。getownpropertydescriptor(obj, undefined );

  //{值:未定义,可写:真,可枚举:真,可配置:真}Reflect.setPrototypeOf()

  静态方法Reflect.setPrototypeOf()与Object.setPrototypeOf()方法是一致的。它将指定对象的原型(即,内部的[[原型]]属性)设置为另一个对象或为零。

  Reflect.setPrototypeOf({},object。原型);//真

  //它可以将对象的[[原型]]更改为零.

  Reflect.setPrototypeOf({},null);//真

  //如果目标不可扩展,则返回错误.

  反思。setprototypeof(对象。冻结({ }),null);//假

  //如果它导致原型链循环,则返回错误.

  var target={ };

  var proto=object。创建(目标);

  Reflect.setPrototypeOf(target,proto);//假推荐学习:JavaScript视频教程以上就是浅析爪哇岛描述语言中显示内置对象(代码详解)的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: