【JS逆向】之JS函数的闭包导出调用

2023-11-13

前言:闭包其实就是一个函数里面的私有方法,我们在函数外部无法调用,这个就叫闭包。理解起来其实也不难。这个其实也跟js的作用域有很大关系的,这里的闭包也用了作用域的特性。js的作用域分两种,全局和局部,基于我们所熟悉的作用域的知识,我们知道在js作用域环境中访问变量的权利是由内向外的,内部作用域可以获得当前作用域下的变量并且可以获得当前包含当前作用域的外层作用域下的变量,反之则不能,也就是说在外层作用域下无法获取内层作用域下的变量,同样在不同的函数作用域中也是不能相互访问彼此变量的,那么我们想在一个函数内部也有限权访问另一个函数内部的变量该怎么办呢?闭包就是用来解决这一需求的,闭包的本质就是在一个函数内部创建另一个函数,让我在函数的外部无法调用函数的那不函数。

1.上面是文字的解释,如果看来还有一点小蒙蔽的话,那么看代码理解吧。


(function (){
var person=function (x,y){
return x+y;
}
})()


2.在这个代码当中,如果你想要调用person函数,那么是不是的在外部函数的内部才可以调用,这个时候这个就会有js作用域的作用了,person函数的作用域是在大函数里面的局部作用域,而我们只能调用全局作用域。看下面代码

var  huaye
(function (){
var person=function (x,y){
return x+y;
}
huaye=person;
})()

在这个时候你就可以直接调用花爷了。花爷是全局作用域,我们是可以调用的。而我们在大函数内部定义的关键调用是huaye=person,那么就把这个函数导出了,这个函数调用了时,也不会影响函数调用大函数的其他函数。

3.今天就到这。其实我写的东西全部是教思路。大家在逆向过程知识固然重要,但是更重要是思路,思路跟上了那么就快了。

4.大家对我写的文章感兴趣,那么就关注我的微信公众号吧,也有很多关于js逆向的知识哦.。欢迎大家伙关注哦。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【JS逆向】之JS函数的闭包导出调用 的相关文章

  • 以编程方式触发 highchart 散点图上某个点的单击事件

    实际上 我有一个小要求 其中有一个带有点列表和下拉列表的散点图 当我从下拉列表中选择一个项目时 应触发其相应的数据点单击 当我在图表上选择一个数据点时 必须执行一些操作 并且下拉列表应根据选择进行更新 我们有什么办法可以做到这一点吗 我尝试
  • 如何按值删除数组中的多个项目?

    我正在尝试做一个removeAll 函数 它将删除具有该特定值 而不是索引 的数组的所有元素 当我们对循环进行任何更改时 棘手的部分就出现了 索引往往会移动 使其很难像我们想要的那样工作 并且每次更改时都重新启动循环 这在大数组上效率非常低
  • select 元素是否具有标准值属性?

    这是一个简单的问题 但我找不到任何参考资料 所以就在这里 假设我有一个选择元素
  • 从 html 页面和 javascript 调用 java webservice

    我正在尝试从 javascript 调用 java 实现的 Web 服务 使用 NetBeans IDE 我读过很多关于 jQuery 和 AJAX 的内容 但我似乎无法掌握它 假设我的 Web 服务 WSDL 位于 http localh
  • spacy 如何使用词嵌入进行命名实体识别 (NER)?

    我正在尝试使用以下方法训练 NER 模型spaCy识别位置 人 名和组织 我试图理解如何spaCy识别文本中的实体 但我无法找到答案 从这个问题 https github com explosion spaCy issues 491在 Gi
  • 更改 pandas 中多个日期时间列的时区信息

    有没有一种简单的方法可以将数据帧中的所有时间戳列转换为本地 任何时区 不是逐列进行吗 您可以有选择地将转换应用于所有日期时间列 首先 选择它们select dtypes https pandas pydata org pandas docs
  • Skrollr 添加空白

    我已经尝试了一切 我在谷歌上阅读了 4 5 页试图找到适合我的修复程序 已经筋疲力尽了 即使我使用 skrollr 示例 我的问题仍然存在 不是说他们做错了什么 我知道我只是没有正确理解它 因此 我上传了一个演示 仅在移动设备上展示这个尴尬
  • 如何在 WebView 中添加 JavaScript 函数并稍后在提交 reCAPTCHA 时从 HTML 调用它

    我在 WebView 中添加一个 JavaScript 函数 如下所示 Kotlin val webView findViewById R id webview as WebView webView getSettings setJavaS
  • 将输入发送到 python 子进程而不等待结果

    我正在尝试为一段代码编写一些基本测试 该代码通常通过 stdin 无休止地接受输入 直到给出特定的退出命令 我想检查程序是否在给出一些输入字符串时崩溃 经过一段时间来考虑处理 但似乎无法弄清楚如何发送数据而不是陷入等待我不知道的输出关心 我
  • Django 在选择列表更改时创建毫无意义的迁移

    我正在尝试使用可调用创建一个带有选择字段的模型 以便 Django 在选择列表更改时不会创建迁移 如中所述this https stackoverflow com questions 31788450 stop django from cr
  • conda-env list / conda info --envs 如何查找环境?

    我一直在尝试 anaconda miniconda 因为我的用户使用随 miniconda 安装的结构生物学程序 并且作者都没有 A 考虑到可能存在其他 miniconda 应用程序 B 他们的程序将在多用户环境中使用 因此 使用 Arch
  • 将一个列表的元素除以另一个列表的元素

    我有两个清单 比如说 a 10 20 30 40 50 60 b 30 70 110 正如你所看到的 列表 b 由一个列表的元素总和组成 其中 window 2 b 0 a 0 a 1 10 20 30 etc 如何获得另一个列表 该列表由
  • 如何有效地从 loadmat 函数生成的嵌套 numpy 数组中提取值?

    python中是否有更有效的方法从嵌套的python列表中提取数据 例如A array array 12000000 dtype object 我一直在使用A 0 0 0 0 当你有很多像 A 这样的数据时 这似乎不是一个有效的方法 我也用
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • 为什么实现 __iter__ 的对象不被识别为可迭代的?

    假设您使用包装对象 class IterOrNotIter def init self self f open tmp toto txt def getattr self item try return self getattribute
  • Scipy 稀疏 Cumsum

    假设我有一个scipy sparse csr matrix代表下面的值 0 0 1 2 0 3 0 4 1 0 0 2 0 3 4 0 我想就地计算非零值的累积和 这会将数组更改为 0 0 1 3 0 6 0 10 1 0 0 3 0 6
  • 在 Javascript 中创建数组

    我对 javascript 不太熟悉 并且在用 javascript 制作 2d 或者也许我可能需要 3d 数组时遇到了一些麻烦 我目前需要收集 2 条信息 一个 ID 和一个值 因此我创建了以下内容 var myArray var id
  • 为什么我们应该在 def __init__(self, n) -> None: 中使用 -> ?

    我们为什么要使用 gt in def init self n gt None 我读了以下摘录来自 PEP 484 https www python org dev peps pep 0484 the meaning of annotatio
  • 如何禁止 celery 中的 pickle 序列化

    Celery 默认使用 pickle 作为任务的序列化方法 如中所述FAQ http ask github com celery faq html isn t using pickle a security concern 这代表一个安全漏
  • 异步和协程与任务队列

    我一直在阅读有关 python 3 中的 asyncio 模块的内容 以及更广泛地了解 python 中的协程的内容 但我不明白是什么让 asyncio 成为如此出色的工具 我的感觉是 你可以用协程做的所有事情 通过使用基于多处理模块 例如

随机推荐

  • 栈溢出学习

    前言 跟着ctfwiki学习 所有题目都在ctfwiki上可以找到 加油加油 栈溢出原理 栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数 因而导致与其相邻的栈中的变量的值被改变 看一个简单的程序 include
  • 【枚举的定义;枚举变量的定义、初始化和赋值】(学习笔记16--枚举)

    目录 枚举的定义 枚举变量的定义 枚举变量的初始化与赋值 使用枚举类型 可以提高程序代码的健壮性和可读性 并且枚举成员属于常量 甚至可以使用枚举成员名作为维的大小 来进行数组的定义 枚举的定义 定义枚举的格式为 enum 枚举名 枚举成员1
  • Muduo网络库核心梳理

    Muduo网络库 Muduo网络库本身并不复杂 是一个新手入门C 面向对象网络编程的经典实战项目 但是 新手在刚刚上手读代码的时候 非常容易陷入代码的汪洋大海 迷失方向 本文旨在简要梳理Muduo网络库的核心内容 帮助初学者快速上手源码阅读
  • DES算法简单介绍及用法

    大家好 今天给大家分享一下DES加密 一 DES介绍 加密一般分为可逆加密和不可逆加密 其中可逆加密一般又分为对称加密和非对称加密 前者是我们使用公用密钥加密之后可以使用公用密钥再解密出来 而后者则是使用公用密钥加密之后必须使用私用密钥来解
  • MySQL这一章就够了(一)

    前言 呕心沥血5个月淦出本文 整理所有MySQL知识 我愿称之为地表最强MySQL MySql笔记 MySQL是关系型数据库 基于SQL查询的开源跨平台数据库管理系统 它最初是由瑞典MySQL AB公司开发的 现在它是Oracle Corp
  • 手把手教你区块链java开发智能合约nft(第四篇)-如何动态获取gasPrice和gasLimit?

    手把手教你区块链java开发智能合约nft 第三篇 如何动态获取gasPrice和gasLimit 初学区块链 那真叫一个痛苦并无助 如果没有人带你的话 今天写的这篇是在前面文章基础上写的 初学区块链的朋友建议先看我前面写的文章 手把手教你
  • 【雕爷学编程】Arduino动手做(72)---HX711 人体称重模块

    37款传感器与执行器的提法 在网络上广泛流传 其实Arduino能够兼容的传感器模块肯定是不止这37种的 鉴于本人手头积累了一些传感器和执行器模块 依照实践出真知 一定要动手做 的理念 以学习和交流为目的 这里准备逐一动手尝试系列实验 不管
  • win32读取注册表

    直接代码 bool bIsIE6 false HKEY hKey NULL DWORD dwType DWORD dwSize LONG lReg RegOpenKey HKEY CLASSES ROOT HTTP shell open c
  • 技术方案设计没有深度?试试这套方法论

    原文为阿里技术发布的一篇文章 作者 高福来 不拔 读后受益匪浅 决定转载分享 平时听到一些同学说技术方案没什么深度 很难讲出来 怎么去体现技术方案设计的深度是大家普遍关心的一个问题 这个问题不是个例问题 因此分享下自己的一些观点和看法 主要
  • ps怎么对比原图快捷键_Photoshop最常用的10个快捷键,让你修图事半功倍!

    小伙伴们 小编今天要给大家发一波福利 揭秘Photoshop最常用的10个快捷键 让你修图事半功倍 1 Ctrl Ctrl 放大 缩小图层 使用Photoshop进行修图时 为了更加准确地进行精修 我们需要放大图片 此时使用快捷键 Ctrl
  • STM32F4-正点原子探索者-SYSTEM文件夹下的delay.c文件内延时函数详解

    目录 笔记 首先是对应的头文件delay h中的函数 1 delay init u8 SYSCLK 此处将把关于UCOS相关代码忽略 后面学习 注 以下为SysTick结构体详解 与主体函数只是有一定联系 可略过 SysTick结构体中的C
  • 散点矩阵

    import pandas as pd import matplotlib pyplot as plt import seaborn as sns crime pd read csv crimeRatesByState2005 csv cr
  • 【Unity3D】Unity3D游戏里实现复制粘贴功能

    public class sTest MonoBehaviour public InputField input public Button btn if UNITY IOS DllImport Internal private stati
  • ffmpeg开发环境的安装测试和更新的步骤

    本文将介绍ffmpeg开发环境的安装测试和更新的步骤 基于ubuntu16 04和ffmpeg3 2 1 安装x264 1 libx264需要yasm sudo apt get install yasm 但是yasm版本比较旧 所以安装na
  • 做个成功的管理者

    什么是 管理 大家对这词都不陌生 但什么才是真正的管理呢 管理的真谛在 理 不在 管 管理者的主要职责就是建立一个合理的游戏规则 让每个员工按照游戏规则自我管理 游戏规则要兼顾公司的利益和个人的利益 并且把公司的利益和个人的利益统一起来 尽
  • SQL语法基础

    结构化查询语言 Structured Query Language 是一种特殊目的的编程语言 是一种数据库查询和程序设计语言 用于存取数据以及查询 更新和管理关系数据库系统 数据查询语言 DQL SELECT 查询 数据操作语言 DML I
  • Flink实时任务性能调优

    前言 通常我们在开发完Flink任务提交运行后 需要对任务的参数进行一些调整 通常需要调整的情况是任务消费速度跟不上数据写入速度 从而导致实时任务出现反压 内存GC频繁 FullGC 频繁 内存溢出导致TaskManager被Kill 今天
  • 【Git】(六)子模块跟随主仓库切换分支

    场景 主仓库 TestGit 子模块 SubModule 分支v1 0 gitmodules文件 submodule Library SubModule path Library SubModule url git gitee com su
  • 内置变量列表(Unix)

    当前页可打印的行数 属于Perl格式系统的一部分 根据上下文内容返回错误号或者错误串 列表分隔符 打印数字时默认的数字输出格式 Perl解释器的进程ID 当前输出通道的当前页号 与上个格式匹配的字符串 当前进程的组ID 当前进程的有效组ID
  • 【JS逆向】之JS函数的闭包导出调用

    前言 闭包其实就是一个函数里面的私有方法 我们在函数外部无法调用 这个就叫闭包 理解起来其实也不难 这个其实也跟js的作用域有很大关系的 这里的闭包也用了作用域的特性 js的作用域分两种 全局和局部 基于我们所熟悉的作用域的知识 我们知道在