ES6知识点整理之----Proxy----this

1、在 Proxy 代理的情况下,目标对象内部的this关键字会指向 Proxy 代理。

2、有些原生对象的内部属性,只有通过正确的this才能拿到,所以 Proxy 也无法代理这些原生对象的属性。

const target = new Date();
const handler = {};
const proxy = new Proxy(target, handler);

proxy.getDate();
// TypeError: this is not a Date object.

this绑定原始对象,就可以解决这个问题。

const target = new Date(‘2015-01-01‘);
const handler = {
  get(target, prop) {
    if (prop === ‘getDate‘) {
      return target.getDate.bind(target);
    }
    return Reflect.get(target, prop);
  }
};
const proxy = new Proxy(target, handler);

proxy.getDate() // 1

原文地址:https://www.cnblogs.com/adhehe/p/9673966.html

时间: 2024-11-06 07:32:14

ES6知识点整理之----Proxy----this的相关文章

ES6知识点整理之第5篇----声明变量总结与global

1.ES6声明变量的6种方法: var function let const import class 2.ES5 的顶层对象,在各种实现里面是不统一的. 浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window. 浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self. Node 里面,顶层对象是global,但其他环境都不支持. 现在有一个提案,在语言标准的层面,引入global作为顶层对象.也就是说,在所有环境下,gl

ES6知识点整理之----正则表达式扩展

1.如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符.而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符. new RegExp(/abc/ig, 'i').flags // "i" 2.字符串对象共有 4 个方法,可以使用正则表达式:match().replace().search()和split().ES6 将这 4 个方法,在语言内部全部调用RegExp的实例方法,从而做到所有与正则相关的方法,全都定义在RegExp对象上

ES6知识点整理之----数组扩展----API新增

Array.from() 用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map). 只要是部署了 Iterator 接口的数据结构,Array.from都能将其转为数组. 任何有length属性的对象,都可以通过Array.from方法转为数组,而扩展运算符就无法转换. Array.from还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回

ES6知识点整理之----Proxy----API

get() 用于拦截某个属性的读取操作,可以接受三个参数,依次为目标对象.属性名和 proxy 实例本身(严格地说,是操作行为所针对的对象),其中最后一个参数可选. var person = { name: "张三" }; var proxy = new Proxy(person, { get: function(target, property) { if (property in target) { return target[property]; } else { throw n

ES6知识点整理之----Generator----概述

1.ES6 提供的一种异步编程解决方案 2.是一个状态机,封装了多个内部状态. 3.是一个遍历器对象生成函数.返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态. 4.Generator 函数是一个普通函数,但是有两个特征.一是,function关键字与函数名之间有一个星号:二是,函数体内部使用yield表达式,定义不同的内部状态. function* helloWorldGenerator() { yield 'hello'; yield 'world'; return

ES6知识点整理之----async----语法

1.async函数返回一个 Promise 对象. 2.async函数内部return语句返回的值,会成为then方法回调函数的参数. async function f() { return 'hello world'; } f().then(v => console.log(v)) // "hello world" 3.async函数内部抛出错误,会导致返回的 Promise 对象变为reject状态.抛出的错误对象会被catch方法回调函数接收到. 4.只有async函数内部

0519知识点整理#2-1

0519知识点整理#2-1 第一章 接口测试及相关工具使用 1.什么是接口 从数据库中获取数据的 前端开发和后端开发用接口(Json)实现交互 Json  一种所有语言都可以解析的数据类型 1.1前端开发和后端开发介绍 前端开发(client)-页面 IOS--object.c Android--Android Web端--html,js 后端开发(server)-逻辑 Python Java PHP GO Ruby 2 接口测试 2.1接口文档 接口测试需要接口文档,文档中需要包括url,请求

数据库设计教程系列——相关知识点整理

一.教程概述 此数据库设计教程是笔者参考网上资料.相关书籍,以及加上自己多年做数据库设计相关工作的经验积累写就. 数据库设计教程在网上已经有大量类似的资料,并且该领域有不少专业书籍,珠玉在前,心有戚戚. 但这作为唯心六艺之一,我还是希望能够在整理知识的同时,写出自己的一些内容,如果能够对读者 有所帮助,那就最好不过了,谢谢. 本教程主要基于关系型数据库进行讲解,对于维度数据库也会视情况有所涉猎. 下面是整个教程涉及的知识点整理,在撰写教程的过程中,如果有改动,也会调整更新此图. 二.知识点整理

asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比

通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致的概括下. (1). ActionResult(base):最基本的Action类型,返回其他类型都可以写ActionResult. (2). ContentResult:返回ContentResult用户定义的内容类型. public ActionResult Content() { return