上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: 李恒道 - 

[油猴脚本开发指南]Reflect的使用

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-8-4 02:11:56 | 显示全部楼层 | 阅读模式

    Reflect是什么?

    Reflect与Proxy都同时在ES2015标准中,他是一个内置的对象,提供一些方法,这些方法与Proxy 的Handler中是相同的,他不是一个函数的对象,因此是不可构造的,我们只可以使用他的静态方法

    为什么存在Reflect?

    通常我们将它与Proxy进行联合使用,在进行劫持后调用原方法,那为什么不直接操作对象呢?

    这点我查阅了资料,认为存在两个原因

    一是目前暴露了一些核心的api供我们调用,但是未来可能隐藏掉这些api,通过Reflect才能调用。

    二是统一操作的过程,如果我们不使用Reflect提供的函数,而使用操作的函数进行对象操作,那有一部分对象操作失败会报出异常,有一部分会报出null等等,返回值并不统一,而Reflect相对统一,比如曾经错误会报出异常的函数,在Reflect内会返回false,使用Reflect我们可以对各种函数有一个更统一的返回值以及处理。

    Reflect的函数有哪些?

    Reflect.apply(target, thisArgument, argumentsList)

    对一个函数进行调用操作,同时可以传入一个数组作为调用参数。和 Function.prototype.apply() 功能类似。

    Reflect.construct(target, argumentsList[, newTarget])

    对构造函数进行 new 操作,相当于执行 new target(...args)。

    Reflect.defineProperty(target, propertyKey, attributes)

    和 Object.defineProperty() 类似。如果设置成功就会返回 true

    Reflect.deleteProperty(target, propertyKey)

    作为函数的delete操作符,相当于执行 delete target[name]。

    Reflect.get(target, propertyKey[, receiver])

    获取对象身上某个属性的值,类似于 target[name]。

    Reflect.getOwnPropertyDescriptor(target, propertyKey)

    类似于 Object.getOwnPropertyDescriptor()。如果对象中存在该属性,则返回对应的属性描述符, 否则返回 undefined.

    Reflect.getPrototypeOf(target)

    类似于 Object.getPrototypeOf()。

    Reflect.has(target, propertyKey)

    判断一个对象是否存在某个属性,和 in 运算符 的功能完全相同。

    Reflect.isExtensible(target)

    类似于 Object.isExtensible().

    Reflect.ownKeys(target)

    返回一个包含所有自身属性(不包含继承属性)的数组。(类似于 Object.keys(), 但不会受enumerable影响).

    Reflect.preventExtensions(target)

    类似于 Object.preventExtensions()。返回一个Boolean。

    Reflect.set(target, propertyKey, value[, receiver])

    将值分配给属性的函数。返回一个Boolean,如果更新成功,则返回true。

    Reflect.setPrototypeOf(target, prototype)

    设置对象原型的函数. 返回一个 Boolean, 如果更新成功,则返回true。

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
  • TA的每日心情
    擦汗
    10 小时前
  • 签到天数: 532 天

    [LV.9]以坛为家II

    148

    主题

    420

    回帖

    1215

    积分

    版主

    积分
    1215

    油中2周年生态建设者

    发表于 2021-8-4 03:00:29 | 显示全部楼层
    ggnb      
    I don't hate programming but the fucking world.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2021-8-4 09:49:35 | 显示全部楼层
    学习了
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-8-4 11:43:23 | 显示全部楼层

    哥哥你一个本来就会的学习了什么!
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-30 00:00
  • 签到天数: 122 天

    [LV.7]常住居民III

    29

    主题

    601

    回帖

    542

    积分

    专家

    积分
    542

    油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2021-8-4 12:37:02 来自手机  | 显示全部楼层
    哥哥是小母牛坐飞机,牛逼上天了,有没有具体点的使用事例
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-8-4 14:08:48 | 显示全部楼层
    脚本体验师001 发表于 2021-8-4 12:37
    哥哥是小母牛坐飞机,牛逼上天了,有没有具体点的使用事例

    下节课有!Xhr返回内容劫持
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-9-11 10:49
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    13

    主题

    269

    回帖

    249

    积分

    版主

    积分
    249
    发表于 2021-8-4 15:10:38 | 显示全部楼层
    积分规则改变了吗
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-8-4 15:19:27 | 显示全部楼层
    水凛子 发表于 2021-8-4 15:10
    积分规则改变了吗

    好像是改了,我没动,可能一之哥哥改的,回头我问下
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2021-8-4 17:52:09 | 显示全部楼层
    水凛子 发表于 2021-8-4 15:10
    积分规则改变了吗

    是的 我改了一下
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表