摘要:構(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
摘要:第三部分介紹一種模板引擎,之所以介紹他是因?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)...
摘要:模板通常用來定義顯示的形式,能夠使得數(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ù)。...
摘要:強(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...
摘要:學(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)容 變...
摘要:學(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)容 變...
閱讀 3989·2021-11-25 09:43
閱讀 2310·2021-11-23 10:13
閱讀 930·2021-11-16 11:44
閱讀 2454·2019-08-29 17:24
閱讀 1473·2019-08-29 17:17
閱讀 3549·2019-08-29 11:30
閱讀 2670·2019-08-26 13:23
閱讀 2429·2019-08-26 12:10