资讯专栏INFORMATION COLUMN

JavaScript 中使用 new Function 执行字符串拼接表达式

qingshanli1988 / 2726人阅读

摘要:构造的这个函数有个形参,作为函数体中立即执行表达式的实参传入最内层的函数中。所以在最后执行的时候便会获得的内容。

作者 @zwhu
原文章 @github

最近在用 node 学写爬虫,也可以叫模拟登陆,遇到某个网站在返回的 HTML 中插入了一个生成页面token的script。

这个HTML的结构大概类似



    
    
        

首先拿到这个页面,然后获取script标签的表达式字符串,剩下的事就是怎样执行表达式字符串,并获取token。

在此处的情景中用eval也是挺不错的选择,但是既然 JS 不推荐这种用法,那我们就换成 new Function 来做。

看下 new Function 的用法如下

new Function ([arg1[, arg2[, ...argN]],] functionBody)

new Function会返回一个函数。例如 fn = new Function("a", "b", "return a + b") 会返回一个函数对象

fn = function(a, b) {
    return a + b
}

so,我们可以使用 new Function 构造一个函数,用来执行获取到得表达式,并返回token。

    fn = new Function("window", functionBody + ";return window.token")
    var token = fn({})
    console.log(token)

构造的这个函数有个window形参,作为函数体中立即执行表达式的实参传入最内层的函数中。所以在最后执行的时候 return window.token 便会获得token 的内容。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86055.html

相关文章

  • [总结] js 模板引擎

    摘要:第三部分介绍一种模板引擎,之所以介绍他是因为。。。。三简介模板引擎是数据与界面分离工作中最重要一环。是新一代模板引擎,它采用预编译方式让性能有了质的飞跃,并且充分利用引擎特性,使得其性能无论在前端还是后端都有极其出色的表现。 嗯,这也是一个学习笔记,材料均来自网络,有改动。。文章主要分为三部分,第一部分通过实现一个简易的ERB模板引擎来介绍其原理,参考javascript模板引擎和实现...

    airborne007 评论0 收藏0
  • javascript模板引擎和实现原理

    摘要:模板通常用来定义显示的形式,能够使得数据展现更为丰富,而且容易维护。从模板引擎的实现上看,需要依赖编程语言的动态编译或者动态解释的特性,以简化实现和提高性能。本文就来实现一个简易的模板引擎,以展现的强大之处。 模板简介 模板通常是指嵌入了某种动态编程语言代码的文本,数据和模板通过某种形式的结合,可以变化出不同的结果。模板通常用来定义显示的形式,能够使得数据展现更为丰富,而且容易维护。...

    Shihira 评论0 收藏0
  • JavaScript编码规范 1

    摘要:强制参数和返回值注释必须包含类型信息和说明。如果重写的形参个数类型顺序和返回值类型均未发生变化,可省略,仅用标识,否则仍应作完整注释。 转载:原地址 1 前言 JavaScript在百度一直有着广泛的应用,特别是在浏览器端的行为管理。本文档的目标是使JavaScript代码风格保持一致,容易被理解和被维护。 虽然本文档是针对JavaScript设计的,但是在使用各种JavaScr...

    jsliang 评论0 收藏0
  • 前端基础入门四(JavaScript基础)

    摘要:学习目标掌握编程的基本思维掌握编程的基本语法我们先来学习基础,后续会讲解高级。语句基本语法当循环条件为时,执行循环体,当循环条件为时,结束循环。基础语法循环体循环条件代码示例初始化变量循环体自增循环条件语句和一般用来解决无法确认次数的循环。 学习目标: 掌握编程的基本思维 掌握编程的基本语法 我们先来学习JavaScript基础,后续会讲解JavaScript高级。 重点内容 变...

    王军 评论0 收藏0
  • 前端基础入门四(JavaScript基础)

    摘要:学习目标掌握编程的基本思维掌握编程的基本语法我们先来学习基础,后续会讲解高级。语句基本语法当循环条件为时,执行循环体,当循环条件为时,结束循环。基础语法循环体循环条件代码示例初始化变量循环体自增循环条件语句和一般用来解决无法确认次数的循环。 学习目标: 掌握编程的基本思维 掌握编程的基本语法 我们先来学习JavaScript基础,后续会讲解JavaScript高级。 重点内容 变...

    SnaiLiu 评论0 收藏0

发表评论

0条评论

qingshanli1988

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<