欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡(jiǎn)單了解JavaScript中的new?Function

 更新時(shí)間:2022年09月21日 08:39:49   作者:陸榮濤  
這篇文章主要介紹了簡(jiǎn)單了解JavaScript中的new?Function,文章通過(guò)圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

前言

JavaScript技術(shù)一直處于不斷發(fā)展壯大中,如果你是前端開(kāi)發(fā)人員或者JavaScript開(kāi)發(fā)工程師,那么,今天這個(gè)知識(shí)點(diǎn),你有必要認(rèn)真了解一下,它就是“new Function”。

1、語(yǔ)法

語(yǔ)法如下:

let?func?=?new?Function?([arg1,?arg2,?…argN],?functionBody);

最后一個(gè)參數(shù)必須是函數(shù)體,其余參數(shù)作為傳遞給函數(shù)體的參數(shù)。

例如:

let?sum?=?new?Function('a',?'b',?'return?a?+?b');
console.log(sum(1,?2));?//?the?result?is?3

我們平時(shí)開(kāi)發(fā) JavaScript 或者 Node.js 的時(shí)候,沒(méi)有理由使用 new Function 構(gòu)造函數(shù),因?yàn)椴恍枰苯邮褂煤瘮?shù)或者 () => {} 箭頭函數(shù)。

這是否意味著 new Function 語(yǔ)法是一個(gè)雞肋的功能?

千萬(wàn)不要這樣想!因?yàn)樗^對(duì)不是你想的那樣!

new Function 語(yǔ)法有一個(gè)特別強(qiáng)大的特性,使它在 JavaScript 中發(fā)揮著不可替代的作用。

有什么特點(diǎn)?也就是函數(shù)體的數(shù)據(jù)格式是字符串,真是不可思議!

不可替代的角色

這里有幾個(gè)例子來(lái)展示 new Function 語(yǔ)法的微妙之處。

01).無(wú)效的 JSON 對(duì)象字符串合法化

例如,有以下字符串:

let?str?=?`{?"id":?103,?name:?'yh',?'date':?'2022–07–06'?}`;

其中的字符串不符合JSON格式(鍵值需要雙引號(hào)),使用JSON.parse()解析會(huì)報(bào)錯(cuò)。

那么,有沒(méi)有什么辦法可以把這個(gè)字符串對(duì)象轉(zhuǎn)換成可以解析的JSON呢?

很多人會(huì)想到正則匹配然后替換,或者使用eval等渣屬性進(jìn)行處理。

沒(méi)必要這么麻煩, new Function 上線了,就完美了!

JS 代碼如下所示

console.log(JSON.stringify(new?Function('return?'?+?str)()));
//?The?return?result?is:?'{"id":10393,"name":"yh","date":"2022–07–06"}'

使用返回語(yǔ)法,你可以輕松地將任意字符串轉(zhuǎn)換為其他 JavaScript數(shù)據(jù)類型。

02).模板字符串作為模板

比如Vue、React等現(xiàn)在都有自己的模板語(yǔ)法,比如{}語(yǔ)法。

如果我們想直接使用 ES6 自己的語(yǔ)法作為模板語(yǔ)言,就必須使用 new Function 的能力,比如下面的 HTML:

<template?id="template">
?${data.map(function?(obj,?index)?{
return?`<p>Article:?${obj.article}</p>
<p>Author:?${obj.author}</p>
`;
?}).join('')}
</template>

我們可以擴(kuò)展字符串并定義一個(gè)名為 interpolate 的字符串方法來(lái)將 ES6 語(yǔ)法字符串轉(zhuǎn)換為可執(zhí)行的 ES6 代碼:

String.prototype.interpolate?=?function?(params)?{
const?names?=?Object.keys(params);
const?vals?=?Object.values(params);return?new?Function(…names,`return?`${this}`;`)(…vals);
};

這樣,只要有對(duì)應(yīng)的數(shù)據(jù),我們就可以根據(jù)

到此這篇關(guān)于簡(jiǎn)單了解JavaScript中的new Function的文章就介紹到這了,更多相關(guān)JS new Function內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文詳解JavaScript中的URL和URLSearchParams

    一文詳解JavaScript中的URL和URLSearchParams

    URL,稱為統(tǒng)一資源定位器,指互聯(lián)網(wǎng)上能找到資源定位的字符串,而URLSearchParams對(duì)象是專門用于處理url網(wǎng)址信息中的查詢字符串,本文就來(lái)帶大家深入了解一下二者的使用
    2023-05-05
  • JavaScript DOM節(jié)點(diǎn)操作方法總結(jié)

    JavaScript DOM節(jié)點(diǎn)操作方法總結(jié)

    下面小編就為大家?guī)?lái)一篇JavaScript DOM節(jié)點(diǎn)操作方法總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • JavaScript中數(shù)組Array.sort()排序方法詳解

    JavaScript中數(shù)組Array.sort()排序方法詳解

    本篇文章主要介紹了JavaScript中數(shù)組Array.sort()的排序方法。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-03-03
  • 基于JavaScript實(shí)現(xiàn)簡(jiǎn)單的音頻播放功能

    基于JavaScript實(shí)現(xiàn)簡(jiǎn)單的音頻播放功能

    本文給大家?guī)?lái)了基于js實(shí)現(xiàn)簡(jiǎn)單的音頻播放功能,數(shù)據(jù)是由后臺(tái)提供的,具體實(shí)例代碼大家參考下本文
    2018-01-01
  • js 獲取瀏覽器版本以此來(lái)調(diào)整CSS的樣式

    js 獲取瀏覽器版本以此來(lái)調(diào)整CSS的樣式

    判斷當(dāng)前使用的是那個(gè)瀏覽器及瀏覽器的那個(gè)版本,根據(jù)瀏覽器版本來(lái)調(diào)整CSS的樣式,下面是獲取當(dāng)前瀏覽器的代碼,需要的朋友可以參考下
    2014-06-06
  • js控制li的隱藏和顯示實(shí)例代碼

    js控制li的隱藏和顯示實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇js控制li的隱藏和顯示實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • JavaScript實(shí)現(xiàn)移動(dòng)端拖動(dòng)元素

    JavaScript實(shí)現(xiàn)移動(dòng)端拖動(dòng)元素

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)移動(dòng)端拖動(dòng)元素,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Ajax::prototype 源碼解讀

    Ajax::prototype 源碼解讀

    Ajax::prototype 源碼解讀...
    2007-01-01
  • Select下拉框模糊查詢功能實(shí)現(xiàn)代碼

    Select下拉框模糊查詢功能實(shí)現(xiàn)代碼

    這篇文章主要介紹了Select下拉框模糊查詢功能實(shí)現(xiàn)代碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • 詳解基于Vue cli生成的Vue項(xiàng)目的webpack4升級(jí)

    詳解基于Vue cli生成的Vue項(xiàng)目的webpack4升級(jí)

    這篇文章主要介紹了詳解基于Vue cli生成的Vue項(xiàng)目的webpack4升級(jí),本文將詳細(xì)介紹從webpack3到webpack4的升級(jí)過(guò)程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06

最新評(píng)論