亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JavaScript 中使用 new Function 執(zhí)行字符串拼接表達(dá)式

qingshanli1988 / 2826人閱讀

摘要:構(gòu)造的這個(gè)函數(shù)有個(gè)形參,作為函數(shù)體中立即執(zhí)行表達(dá)式的實(shí)參傳入最內(nèi)層的函數(shù)中。所以在最后執(zhí)行的時(shí)候便會獲得的內(nèi)容。

作者 @zwhu
原文章 @github

最近在用 node 學(xué)寫爬蟲,也可以叫模擬登陸,遇到某個(gè)網(wǎng)站在返回的 HTML 中插入了一個(gè)生成頁面token的script。

這個(gè)HTML的結(jié)構(gòu)大概類似



    
    
        

首先拿到這個(gè)頁面,然后獲取script標(biāo)簽的表達(dá)式字符串,剩下的事就是怎樣執(zhí)行表達(dá)式字符串,并獲取token。

在此處的情景中用eval也是挺不錯的選擇,但是既然 JS 不推薦這種用法,那我們就換成 new Function 來做。

看下 new Function 的用法如下

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

new Function會返回一個(gè)函數(shù)。例如 fn = new Function("a", "b", "return a + b") 會返回一個(gè)函數(shù)對象

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

so,我們可以使用 new Function 構(gòu)造一個(gè)函數(shù),用來執(zhí)行獲取到得表達(dá)式,并返回token。

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

構(gòu)造的這個(gè)函數(shù)有個(gè)window形參,作為函數(shù)體中立即執(zhí)行表達(dá)式的實(shí)參傳入最內(nèi)層的函數(shù)中。所以在最后執(zhí)行的時(shí)候 return window.token 便會獲得token 的內(nèi)容。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/86055.html

相關(guān)文章

  • [總結(jié)] js 模板引擎

    摘要:第三部分介紹一種模板引擎,之所以介紹他是因?yàn)?。。。。三簡介模板引擎是?shù)據(jù)與界面分離工作中最重要一環(huán)。是新一代模板引擎,它采用預(yù)編譯方式讓性能有了質(zhì)的飛躍,并且充分利用引擎特性,使得其性能無論在前端還是后端都有極其出色的表現(xiàn)。 嗯,這也是一個(gè)學(xué)習(xí)筆記,材料均來自網(wǎng)絡(luò),有改動。。文章主要分為三部分,第一部分通過實(shí)現(xiàn)一個(gè)簡易的ERB模板引擎來介紹其原理,參考javascript模板引擎和實(shí)現(xiàn)...

    airborne007 評論0 收藏0
  • javascript模板引擎和實(shí)現(xiàn)原理

    摘要:模板通常用來定義顯示的形式,能夠使得數(shù)據(jù)展現(xiàn)更為豐富,而且容易維護(hù)。從模板引擎的實(shí)現(xiàn)上看,需要依賴編程語言的動態(tài)編譯或者動態(tài)解釋的特性,以簡化實(shí)現(xiàn)和提高性能。本文就來實(shí)現(xiàn)一個(gè)簡易的模板引擎,以展現(xiàn)的強(qiáng)大之處。 模板簡介 模板通常是指嵌入了某種動態(tài)編程語言代碼的文本,數(shù)據(jù)和模板通過某種形式的結(jié)合,可以變化出不同的結(jié)果。模板通常用來定義顯示的形式,能夠使得數(shù)據(jù)展現(xiàn)更為豐富,而且容易維護(hù)。...

    Shihira 評論0 收藏0
  • JavaScript編碼規(guī)范 1

    摘要:強(qiáng)制參數(shù)和返回值注釋必須包含類型信息和說明。如果重寫的形參個(gè)數(shù)類型順序和返回值類型均未發(fā)生變化,可省略,僅用標(biāo)識,否則仍應(yīng)作完整注釋。 轉(zhuǎn)載:原地址 1 前言 JavaScript在百度一直有著廣泛的應(yīng)用,特別是在瀏覽器端的行為管理。本文檔的目標(biāo)是使JavaScript代碼風(fēng)格保持一致,容易被理解和被維護(hù)。 雖然本文檔是針對JavaScript設(shè)計(jì)的,但是在使用各種JavaScr...

    jsliang 評論0 收藏0
  • 前端基礎(chǔ)入門四(JavaScript基礎(chǔ))

    摘要:學(xué)習(xí)目標(biāo)掌握編程的基本思維掌握編程的基本語法我們先來學(xué)習(xí)基礎(chǔ),后續(xù)會講解高級。語句基本語法當(dāng)循環(huán)條件為時(shí),執(zhí)行循環(huán)體,當(dāng)循環(huán)條件為時(shí),結(jié)束循環(huán)?;A(chǔ)語法循環(huán)體循環(huán)條件代碼示例初始化變量循環(huán)體自增循環(huán)條件語句和一般用來解決無法確認(rèn)次數(shù)的循環(huán)。 學(xué)習(xí)目標(biāo): 掌握編程的基本思維 掌握編程的基本語法 我們先來學(xué)習(xí)JavaScript基礎(chǔ),后續(xù)會講解JavaScript高級。 重點(diǎn)內(nèi)容 變...

    王軍 評論0 收藏0
  • 前端基礎(chǔ)入門四(JavaScript基礎(chǔ))

    摘要:學(xué)習(xí)目標(biāo)掌握編程的基本思維掌握編程的基本語法我們先來學(xué)習(xí)基礎(chǔ),后續(xù)會講解高級。語句基本語法當(dāng)循環(huán)條件為時(shí),執(zhí)行循環(huán)體,當(dāng)循環(huán)條件為時(shí),結(jié)束循環(huán)?;A(chǔ)語法循環(huán)體循環(huán)條件代碼示例初始化變量循環(huán)體自增循環(huán)條件語句和一般用來解決無法確認(rèn)次數(shù)的循環(huán)。 學(xué)習(xí)目標(biāo): 掌握編程的基本思維 掌握編程的基本語法 我們先來學(xué)習(xí)JavaScript基礎(chǔ),后續(xù)會講解JavaScript高級。 重點(diǎn)內(nèi)容 變...

    SnaiLiu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<