javascript标准库(js的标准内置对象)总结(11)


返回:数组的 iterator 方法,默认情况下与 values() 返回值相同。

arr.flatten(depth)

定义:会递归到指定深度将所有子数组连接,并返回一个新数组。
参数:depth 可选指定嵌套数组中的结构深度,默认值为1。
返回:一个将子数组连接的新数组。

arr.flatMap(function callback(currentValue[, index[, array]]) { // 返回新数组的元素}[, thisArg])

定义:首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 和 深度值1的 flatten 几乎相同,但flatMap通常在合并成一种方法的效率稍微高一些。
返回:一个新的数组,其中每个元素都是回调函数的结果,并且结构深度 depth 值为1。

Proxy && Reflect

Proxy是一个构造函数(对对象的访问进行拦截),Reflect(操作对象提供的API)。
Reflect它与Proxy对象的方法是一一对应的,这就让Proxy对象可以方便地调用对应的Reflect方法,完成默认行为,作为修改行为的基础。

Proxy

Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。
Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。

Proxy方法:target参数表示所要拦截的目标对象,handler参数也是一个对象,用来定制拦截行为
var proxy = new Proxy(target, handler);
var person = {
 name: "张三"
};
var proxy = new Proxy(person, {
 get: function(target, property) {
  if (property in target) {
   return target[property];
  } else {
   throw new ReferenceError("Property \"" + property + "\" does not exist.");
  }
 }
});
proxy.name // "张三"
proxy.age // 抛出一个错误

Proxy使用详解

Reflect

将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上。现阶段,某些方法同时在Object和Reflect对象上部署,未来的新方法将只部署在Reflect对象上。也就是说,从Reflect对象上可以拿到语言内部的方法。
// 下列方法说明:target为目标对象,name为某个属性,receiver为如果name属性设置了赋值函数,则为函数的this指向
Reflect.apply(target, thisArg, args)
Reflect.apply方法等同于Function.prototype.apply.call(func, thisArg, args),用于绑定this对象后执行给定函数。
Reflect.construct(target, args)
Reflect.construct方法等同于new target(…args),这提供了一种不使用new,来调用构造函数的方法。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/62.html