精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試官:你能實現一個 JavaScript 模板引擎嗎?

開發 前端
with? 關鍵字屬于被棄用的語法(但是 Vue3 的源碼中依然使用到了 with),但是在這里依然可以實現對應的功能。

Hello,大家好,我是 Sunday。

這個問題具體是這樣的:請為字符串增加一個 render 方法,可以實現如下最終的打印。

const template = '我是 ${name}, 年齡 ${age} 歲'
const employee = {
  name: 'Sunday',
  age: 18
}
const renderStr = template.render(employee)
// 輸出成字符串
console.log(renderStr) 
// '我是 Sunday, 年齡 18 歲'

乍一看,這不就是 模板引擎 嗎?合著這是讓我手寫一個 `` 的簡易版出來啊。

不過還好,既然是簡易版那就并不復雜。一共有三種方式,咱們來看看吧!

01:利用正則表達式

使用正則表達式應該是大多數的同學第一時間想到的方案了。

只需要通過正則替換 ${name} 和 ${age} 就可以直接實現對應的功能。

String.prototype.render = function (obj) {
  const template = this
  const variableRegex = /\$\{([^${}]+)\}/g
  template.replace(variableRegex, ($0, variable) => {
     // 打印對應的屬性
    console.log(variable)
  })
}
const template = '我是 ${name}, 年齡 ${age} 歲'
template.render()

通過以上代碼我們可以直接拿到 ${name} 之中的屬性,所以接下來咱們就只需要完成替換即可。

// 為 String 對象的原型添加一個名為 render 的方法
String.prototype.render = function (obj) {
  // 保存調用該方法的字符串實例
  const template = this;
  // 定義一個正則表達式,用于匹配 ${variableName} 格式的變量
  const variableRegex = /\$\{([^${}]+)\}/g;
  // 定義一個函數,用于根據傳入的對象獲取變量的值
  const getVariableValue = (variable) => {
    // 將變量名按照 '.' 分隔成數組,例如 'user.name' 會分隔成 ['user', 'name']
    variable = variable.split('.');
    // 初始化 variableValue,使其指向傳入的對象 obj
    let variableValue = obj;
    // 遍歷分隔后的變量名數組,逐層獲取嵌套屬性的值
    while (variable.length) {
      // 取出數組的第一個元素,并獲取對應的屬性值
      variableValue = variableValue[variable.shift()];
    }
    // 返回最終獲取到的變量值
    return variableValue;
  };
  // 使用 replace 方法替換模板字符串中的變量
  // $0 是匹配到的整個字符串,例如 ${name}
  // variable 是捕獲組中的變量名,例如 name
  const renderStr = template.replace(variableRegex, ($0, variable) => {
    // 獲取變量值并替換模板中的變量
    return getVariableValue(variable);
  });
  // 返回替換后的字符串
  return renderStr;
};

02:使用 eval

eval() 函數會將傳入的字符串當做 JavaScript 代碼進行執行。

比如:

const employee = {
  name: 'Sunday',
  age: 18
}
const { name } = employee
console.log(name) // Sunday

這樣的代碼使用 eval 方法可以這么寫:

const employee = {
  name: 'Sunday',
  age: 18
}
// 注意:必須是 var
eval('var { name } = employee')

console.log(name) // Sunday

這樣的好處在于 可以根據 obj 的 key 動態的生成新的變量。

因此,就可以得到如下代碼:

// 為 String 對象的原型添加一個名為 render 的方法
String.prototype.render = function (obj) {
  // 保存調用該方法的字符串實例
  const template = this;

  // 使用 eval 動態解構 obj 對象,將其屬性名作為變量名,并賦值給這些變量
  // 例如,obj = { name: 'Sunday', age: 18}
  // 生成的代碼類似于:var { name, age, job } = obj;
  eval(`var {${Object.keys(obj).join(',')}} = obj`);

  // 使用模板字符串替換變量,并生成最終的字符串
  // 這里的 eval 用于解析和執行模板字符串,其中包含 obj 對象的屬性值
  // 例如,template = '我是 ${name}, 年齡 ${age} 歲'
  // 生成的代碼類似于:`我是 ${name}, 年齡 ${age} 歲`
  const renderStr = eval('`' + template + '`');

  // 返回替換后的字符串
  return renderStr;
}

03:with 關鍵字

with 語句擴展一個語句的作用域鏈

with 關鍵字屬于被棄用的語法(但是 Vue3 的源碼中依然使用到了 with),但是在這里依然可以實現對應的功能。

圖片圖片

我們可以通過以下示例來演示 with 的作用:

const employee = {
  name: 'Sunday',
  age: 18
}
with (employee) {
  console.log(name, age)  // Sunday 18
}

基于這個特性,使用 with 實現這個功能就非常簡單了。

String.prototype.render = function (obj) {
  with(obj) {
     // this 實例。即:我是 ${name}, 年齡 ${age} 歲
     // 兩邊加上 ` ` 即可利用 ES6 的模板運算符實現此功能
    return eval('`' + this + '`')
  }
}
責任編輯:武曉燕 來源: 程序員Sunday
相關推薦

2023-08-11 17:13:39

JavaScrip

2023-07-31 08:26:09

2022-04-08 08:26:03

JavaHTTP請求

2021-09-28 13:42:55

Chrome Devwebsocket網絡協議

2025-10-20 04:00:00

2025-11-11 09:25:19

2017-03-15 08:43:29

JavaScript模板引擎

2017-03-20 17:59:19

JavaScript模板引擎

2021-07-05 07:55:11

String[]byte轉換

2015-08-13 10:29:12

面試面試官

2021-12-13 11:54:13

SetEs6接口

2019-06-21 15:20:05

Redis數據結構數據庫

2023-01-18 17:50:35

系統架構Kafka

2022-10-08 00:08:00

apiESFacebook

2021-06-09 07:55:19

NodeEventEmitte驅動

2022-07-15 08:22:42

對象符串鍵Symbol

2020-08-10 07:49:51

服務器

2021-02-25 07:08:30

JavaScript 前端面試題

2024-08-27 12:36:33

2022-02-07 20:18:29

Redis緩存裝飾
點贊
收藏

51CTO技術棧公眾號

亚洲成人第一网站| 亚洲啪av永久无码精品放毛片| 成人资源www网在线最新版| 日韩不卡一区二区| www.欧美免费| av漫画在线观看| 都市激情亚洲一区| 亚洲欧美日韩中文字幕一区二区三区| 国产91aaa| 爆乳熟妇一区二区三区霸乳| 四虎精品一区二区三区| 日韩电影在线免费看| 欧美日韩成人黄色| xxxx日本黄色| 男人天堂亚洲| 久久精品999| 永久免费精品影视网站| 中文字幕在线观看视频www| 一二三四视频在线中文| 亚洲人成人一区二区在线观看| 国产精华一区| 91麻豆国产视频| 蜜桃av综合| 欧美激情一区二区三区在线视频观看 | 五月天婷婷在线视频| 成人福利电影精品一区二区在线观看| 色噜噜狠狠狠综合曰曰曰88av| 蜜臀aⅴ国产精品久久久国产老师 性活交片大全免费看 | 久久久精品免费免费| 亚洲综合自拍一区| 一级全黄裸体免费视频| 久久午夜av| 精品无人区太爽高潮在线播放| 99中文字幕在线| 日韩pacopacomama| 偷拍日韩校园综合在线| 五月天激情图片| 淫片在线观看| 中文字幕乱码一区二区免费| 欧美大香线蕉线伊人久久国产精品| 国产国语亲子伦亲子| 看电视剧不卡顿的网站| 国产91精品在线播放| 国产无遮挡aaa片爽爽| 你懂的国产精品| 久久综合亚洲社区| 神马久久精品综合| 日韩一区电影| 久久精品精品电影网| 国产黄色录像视频| 夜夜春成人影院| 精品亚洲aⅴ在线观看| 波多野结衣视频播放| 国产精品欧美大片| 日韩av在线免费播放| 喷水视频在线观看| 欧美人妖视频| 亚洲人成人99网站| 精品无码人妻一区二区免费蜜桃 | 亚洲a∨一区二区三区| 韩国免费在线视频| 久久久久久99精品| 粉嫩av四季av绯色av第一区| 亚洲免费黄色网址| 欧美熟乱15p| 亚洲香蕉在线观看| 一级片免费在线观看视频| 日韩在线电影| 欧美一级片免费看| 69亚洲乱人伦| 亚洲丝袜啪啪| 视频在线观看99| 欧美日韩人妻精品一区二区三区| 欧美 亚欧 日韩视频在线| 欧美大秀在线观看| 91av在线免费视频| 国产精品久久久久9999赢消| 欧美成人国产va精品日本一级| 黄色在线观看免费| 日本一区二区三区视频| 日韩在线视频播放| 精品97人妻无码中文永久在线| 亚洲视屏一区| 26uuu另类亚洲欧美日本一 | 美女日韩在线中文字幕| 国产精品久久久久久中文字| 国产又粗又黄又爽的视频| 国产高清视频一区| 久久久久久国产精品mv| 成年女人的天堂在线| 亚洲欧美日韩久久| 99在线精品免费视频| 成人免费看黄| 欧美挠脚心视频网站| 久久久久无码国产精品一区李宗瑞 | 色94色欧美sute亚洲线路二| 尤蜜粉嫩av国产一区二区三区| 韩国一区二区三区视频| 欧美性色xo影院| 91淫黄看大片| av综合网页| 911精品国产一区二区在线| 一区二区三区国产好的精华液| 国产精品x8x8一区二区| 在线成人中文字幕| 国产精品第一页在线观看| 日韩在线卡一卡二| 成人www视频在线观看| 日韩在线视频观看免费| 国产精品色一区二区三区| 成人免费在线视频播放| 捆绑调教日本一区二区三区| 欧美老年两性高潮| 97超碰在线免费观看| 国产精品v日韩精品v欧美精品网站 | 免费高清在线观看电视| 久久福利毛片| 国产精品v欧美精品v日韩| 91社区在线观看播放| 久久先锋资源网| 国产四区在线观看| 男人的天堂在线视频免费观看| 国产午夜精品理论片a级大结局| 男女啪啪的视频| 日韩伦理三区| 亚洲电影天堂av| 国产97免费视频| 日本vs亚洲vs韩国一区三区二区| 国产精品三区www17con| a级影片在线观看| 欧美性大战久久久久久久蜜臀| 日本50路肥熟bbw| 欧美韩国一区| 91免费人成网站在线观看18| 18视频免费网址在线观看| 欧美性xxxx极品高清hd直播| 影音先锋黄色资源| 欧美午夜a级限制福利片| 成人有码视频在线播放| 18视频免费网址在线观看| 欧美影院一区二区三区| 少妇精品一区二区三区| 亚洲深夜av| 精品一区二区三区日本| а√天堂资源官网在线资源| 日韩精品一区二区三区视频播放 | aiai在线| 欧美性生活久久| 一区二区伦理片| 亚欧美中日韩视频| 日韩美女免费观看| 国产又爽又黄网站亚洲视频123| 一级女性全黄久久生活片免费| 黄色三级视频在线播放| 91成人免费| 亚洲bt欧美bt日本bt| 国产不卡在线| 日韩精品一区二区三区四区视频| 国产亚洲精品久久久久久打不开| 国产成人超碰人人澡人人澡| 国产xxxx振车| 日本一道高清一区二区三区| 4438全国成人免费| 丁香婷婷在线| 欧美日韩免费不卡视频一区二区三区| 内射毛片内射国产夫妻| 秋霞电影网一区二区| 亚洲v欧美v另类v综合v日韩v| 69堂免费精品视频在线播放| 在线视频国产日韩| 一区二区日韩视频| 一区二区欧美精品| 成人免费无码大片a毛片| 久久精品1区| 在线精品亚洲一区二区| 日韩高清一区| 欧美专区中文字幕| 国精产品一区| 亚洲福利影片在线| 一级片在线免费播放| ●精品国产综合乱码久久久久| 日批视频在线看| 国产免费成人| 亚洲一区二区不卡视频| theporn国产在线精品| 欧美一级片在线播放| aiai在线| 亚洲国产成人久久综合| 奴色虐av一区二区三区| 亚洲女子a中天字幕| 第四色在线视频| 蜜臀久久99精品久久久久久9| 蜜臀av性久久久久蜜臀av| 欧美调教网站| 91九色视频导航| 毛片电影在线| 久久韩国免费视频| 亚洲日本在线播放| 777亚洲妇女| 中文字幕精品三级久久久| 国产精品毛片无遮挡高清| 国产精品亚洲一区二区无码| 青草av.久久免费一区| 17c丨国产丨精品视频| 欧美久久精品一级c片| 国产精品.com| 亚洲一区二区小说| 日本欧美爱爱爱| 午夜小视频在线观看| 国产一区二区欧美日韩| 五十路在线观看| 欧美一区二区三区四区五区 | 在线综合视频播放| 久久精品五月天| aaa国产一区| 精品亚洲视频在线| 天堂蜜桃91精品| 2019日韩中文字幕mv| 天天影视欧美综合在线观看| 欧美成人免费在线| 风间由美中文字幕在线看视频国产欧美| 国产精品第一页在线| 18aaaa精品欧美大片h| 久久久精品欧美| av在线天堂| 亚洲视频999| 天堂在线资源网| 日韩视频一区在线观看| 国产一区二区麻豆| 欧美日韩一级二级三级| 黄色片中文字幕| 午夜视黄欧洲亚洲| 无码人妻精品一区二区三应用大全 | 亚洲人成伊人成综合图片| 99精品欧美一区二区三区| 日韩欧美三区| 国产拍精品一二三| 国产一区二区三区影视| 国产精品扒开腿爽爽爽视频 | 国内精品久久久久久久97牛牛| 正在播放一区| 99成人在线视频| 亚洲一区二区高清视频| 欧美日韩黑人| 午夜精品一区二区三区四区| 国产精品一区二区99| 蜜桃成人在线| 久久99性xxx老妇胖精品| 精品视频免费观看| 亚洲免费成人av在线| 久久精品aaaaaa毛片| 日本成人7777| 久久久久久久久一区| 蜜桃a∨噜噜一区二区三区| 久热国产精品视频一区二区三区| 欧美挤奶吃奶水xxxxx| 精品一区二区日本| av中字幕久久| 永久久久久久| 欧美在线黄色| 隔壁人妻偷人bd中字| 日韩一区二区久久| 日本一区高清在线视频| 蜜乳av综合| 亚洲精品不卡| 亚洲一区色图| 精品无人乱码一区二区三区的优势 | 久久精品男女| 日本美女高潮视频| 激情综合色综合久久综合| 91福利免费观看| 国产99久久久国产精品| av在线网站观看| 国产精品欧美久久久久一区二区| 国产午夜精品理论片在线| 亚洲免费观看高清完整版在线观看 | 国产精品久久777777毛茸茸| 少妇性l交大片| 精品亚洲免费视频| 性活交片大全免费看| 久久久欧美精品sm网站| 中文字幕91视频| 亚洲二区在线观看| 无码人妻丰满熟妇精品| 7777女厕盗摄久久久| 亚洲精品97久久中文字幕无码| 亚洲精品国产欧美| 生活片a∨在线观看| 国语对白做受69| 国产综合色在线观看| 国产超碰91| 成人三级视频| 波多野结衣av一区二区全免费观看 | 欧美激情中文字幕乱码免费| 亚洲精品mv| 亚洲淫片在线视频| 欧美日韩123| 日韩久久久久久久久久久久| 日韩国产欧美在线视频| 亚洲 自拍 另类 欧美 丝袜| 久久一留热品黄| 免费一级片在线观看| 欧美性videosxxxxx| 黄色片网站免费在线观看| 在线午夜精品自拍| 亚洲美女尤物影院| av在线不卡观看| 成人动漫免费在线观看| 无码粉嫩虎白一线天在线观看| 美女视频黄 久久| 久久国产精品无码一级毛片| 亚洲精品国产无套在线观| 欧美人一级淫片a免费播放| 亚洲成人黄色在线观看| 免费黄色在线观看| 性日韩欧美在线视频| 九九99久久精品在免费线bt| 日韩欧美一区二区三区久久婷婷| 亚洲无线视频| 亚洲精品乱码久久久久久动漫| 久久久久久99精品| 日韩av大片在线观看| 精品少妇一区二区三区在线播放| 最新97超碰在线| 国产99在线|中文| 国产精品一线| 高清无码视频直接看| 国内精品伊人久久久久av影院 | 亚洲精品在线视频免费观看| 亚洲免费在线观看| 国产免费福利视频| 久久精品国产91精品亚洲| 国产综合av| 欧美午夜精品久久久久免费视| 99在线精品免费视频九九视 | 91精品国产91久久久久福利| 婷婷综合国产| www.-级毛片线天内射视视| 麻豆久久一区二区| 99久久久无码国产精品衣服| 色偷偷久久一区二区三区| 深夜福利在线观看直播| 亚洲娇小xxxx欧美娇小| 少女频道在线观看高清| 亚洲最大av网站| 欧美成人一品| 日本少妇xxx| 亚洲综合激情小说| 午夜精品在线播放| 欧美猛交ⅹxxx乱大交视频| 国内精品视频| 久久久久久久久久伊人| 国产99久久久国产精品潘金网站| 欧美国产在线看| 精品久久久久久综合日本欧美| 视频在线这里都是精品| 国产日韩精品久久| 一区二区三区国产盗摄| 中文字幕免费高清| 欧美视频完全免费看| 调教视频免费在线观看| 2022国产精品| 在线亚洲自拍| av网站免费在线看| 欧美日韩精品欧美日韩精品一| 欧美成人视屏| 999热视频| 亚洲一区二区伦理| 中文字幕免费在线看线人动作大片| 欧美日韩一区二区电影| 亚洲91av| 欧美日韩在线高清| 精品在线亚洲视频| 欧美一区二区免费在线观看| 欧美午夜性色大片在线观看| 国产精品久久久久一区二区国产| 国产精品视频公开费视频| 一区二区三区午夜探花| bl动漫在线观看| 欧美日韩日日摸| 国产区美女在线| 欧洲久久久久久| 国产在线不卡一区| 成人免费看片98欧美| 一色桃子一区二区| 亚洲高清999| 日韩爱爱小视频| 亚洲一区在线观看免费观看电影高清| 亚洲aaaaaaa| 91精品视频播放| 亚洲在线成人| 黄色一级片中国| 亚洲欧美激情一区| 久久丁香四色| 青青草av网站| 亚洲成av人片在线| 男人和女人做事情在线视频网站免费观看 | 日韩有码在线观看| 欧美激情极品| 性久久久久久久久久久久久久|