摘要:構(gòu)造的這個(gè)函數(shù)有個(gè)形參,作為函數(shù)體中立即執(zhí)行表達(dá)式的實(shí)參傳入最內(nèi)層的函數(shù)中。所以在最后執(zhí)行的時(shí)候便會(huì)獲得的內(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也是挺不錯(cuò)的選擇,但是既然 JS 不推薦這種用法,那我們就換成 new Function 來做。
看下 new Function 的用法如下
new Function ([arg1[, arg2[, ...argN]],] functionBody)
new Function會(huì)返回一個(gè)函數(shù)。例如 fn = new Function("a", "b", "return a + b") 會(huì)返回一個(gè)函數(shù)對(duì)象
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 便會(huì)獲得token 的內(nèi)容。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86055.html
摘要:第三部分介紹一種模板引擎,之所以介紹他是因?yàn)?。。。。三?jiǎn)介模板引擎是數(shù)據(jù)與界面分離工作中最重要一環(huán)。是新一代模板引擎,它采用預(yù)編譯方式讓性能有了質(zhì)的飛躍,并且充分利用引擎特性,使得其性能無論在前端還是后端都有極其出色的表現(xiàn)。 嗯,這也是一個(gè)學(xué)習(xí)筆記,材料均來自網(wǎng)絡(luò),有改動(dòng)。。文章主要分為三部分,第一部分通過實(shí)現(xiàn)一個(gè)簡(jiǎn)易的ERB模板引擎來介紹其原理,參考javascript模板引擎和實(shí)現(xiàn)...
摘要:模板通常用來定義顯示的形式,能夠使得數(shù)據(jù)展現(xiàn)更為豐富,而且容易維護(hù)。從模板引擎的實(shí)現(xiàn)上看,需要依賴編程語言的動(dòng)態(tài)編譯或者動(dòng)態(tài)解釋的特性,以簡(jiǎn)化實(shí)現(xiàn)和提高性能。本文就來實(shí)現(xiàn)一個(gè)簡(jiǎn)易的模板引擎,以展現(xiàn)的強(qiáng)大之處。 模板簡(jiǎn)介 模板通常是指嵌入了某種動(dòng)態(tài)編程語言代碼的文本,數(shù)據(jù)和模板通過某種形式的結(jié)合,可以變化出不同的結(jié)果。模板通常用來定義顯示的形式,能夠使得數(shù)據(jù)展現(xiàn)更為豐富,而且容易維護(hù)。...
摘要:強(qiáng)制參數(shù)和返回值注釋必須包含類型信息和說明。如果重寫的形參個(gè)數(shù)類型順序和返回值類型均未發(fā)生變化,可省略,僅用標(biāo)識(shí),否則仍應(yīng)作完整注釋。 轉(zhuǎn)載:原地址 1 前言 JavaScript在百度一直有著廣泛的應(yīng)用,特別是在瀏覽器端的行為管理。本文檔的目標(biāo)是使JavaScript代碼風(fēng)格保持一致,容易被理解和被維護(hù)。 雖然本文檔是針對(duì)JavaScript設(shè)計(jì)的,但是在使用各種JavaScr...
摘要:學(xué)習(xí)目標(biāo)掌握編程的基本思維掌握編程的基本語法我們先來學(xué)習(xí)基礎(chǔ),后續(xù)會(huì)講解高級(jí)。語句基本語法當(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ù)會(huì)講解JavaScript高級(jí)。 重點(diǎn)內(nèi)容 變...
摘要:學(xué)習(xí)目標(biāo)掌握編程的基本思維掌握編程的基本語法我們先來學(xué)習(xí)基礎(chǔ),后續(xù)會(huì)講解高級(jí)。語句基本語法當(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ù)會(huì)講解JavaScript高級(jí)。 重點(diǎn)內(nèi)容 變...
閱讀 3784·2021-11-25 09:43
閱讀 2202·2021-11-23 10:13
閱讀 835·2021-11-16 11:44
閱讀 2383·2019-08-29 17:24
閱讀 1393·2019-08-29 17:17
閱讀 3488·2019-08-29 11:30
閱讀 2592·2019-08-26 13:23
閱讀 2353·2019-08-26 12:10