精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩中文不卡| 国产做受高潮69| 日本久久久久久久久久久久| 国产视频精品久久| 捆绑变态av一区二区三区| 中文字幕久久久| 永久看看免费大片| 色多多在线观看| 国产欧美一区二区在线| 成人在线播放av| 日韩黄色精品视频| wwwww在线观看免费视频| 人人超碰91尤物精品国产| 久久这里只有精品99| 少妇精品无码一区二区三区| 精品视频在线一区二区在线| 亚洲精品免费在线播放| 精品日韩电影| 91在线观看喷潮| 亚洲青涩在线| 色偷偷av一区二区三区| 99riav国产精品视频| 日韩大尺度黄色| 自拍偷拍欧美激情| 欧美精品免费观看二区| 国产女主播福利| 日本中文字幕在线一区| 欧美日韩国产综合视频在线观看| www.国产在线视频| 在线免费av电影| 成人动漫一区二区三区| 国产免费一区二区三区香蕉精| 亚洲国产精品免费在线观看| 亚洲激情播播| 欧美成人aa大片| 九九热在线免费| 国产资源在线观看入口av| **性色生活片久久毛片| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 3d成人h动漫网站入口| 人人干视频在线| 国产在线1区| 国产日本欧洲亚洲| 国产一区在线免费观看| 国产精品自产拍| 日本美女一区二区| 日韩av成人在线观看| 精品无码一区二区三区电影桃花| 欧美3p视频| 亚洲日韩欧美视频| av黄色一级片| 亚洲日本va午夜在线电影| 欧美日韩免费观看一区二区三区 | 久久精品亚洲| 国内精品400部情侣激情| www.超碰在线观看| 99久久九九| 一区二区亚洲精品国产| 亚洲精品国产91| 中日韩免视频上线全都免费| 亚洲成人久久电影| 高清中文字幕mv的电影| 亚洲图色一区二区三区| 日韩一区二区三区精品视频 | 欧洲亚洲两性| 欧美性极品xxxx娇小| 色综合久久久久无码专区| 第四色日韩影片| 亚洲午夜电影网| 毛片在线播放视频| 高清精品在线| 精品久久在线播放| 欧美少妇性生活视频| 精品日本视频| 欧美日韩国产综合一区二区三区| 99re6在线观看| 国产欧美视频在线| 欧美成va人片在线观看| 亚洲图片综合网| 西野翔中文久久精品国产| 日韩精品有码在线观看| 久久精品网站视频| 日韩影片中文字幕| 欧美日韩视频第一区| 亚欧激情乱码久久久久久久久| 免费视频成人| 日韩欧美国产不卡| 亚洲天堂资源在线| 精品欧美激情在线观看| 久久精品国产v日韩v亚洲| 欧美激情图片小说| 在线精品一区| 国产精品99久久99久久久二8| 波多野结衣毛片| 精品一区二区在线免费观看| 91入口在线观看| 人妻与黑人一区二区三区| 91年精品国产| 亚洲欧洲精品一区二区三区波多野1战4| 日本成人一区| 国产午夜亚洲精品理论片色戒| 亚洲欧洲一区二区福利| 午夜羞羞小视频在线观看| 欧美日韩在线视频首页| 蜜臀一区二区三区精品免费视频| 美女久久精品| 亚洲欧美一区二区三区四区| 亚洲色图100p| 伊人影院久久| 国产精品视频yy9099| 性生活视频软件| 久久久精品国产免大香伊| 男人j进女人j| 欧洲一区二区三区精品| 精品少妇一区二区三区在线视频| 白丝女仆被免费网站| 欧美 日韩 国产精品免费观看| 欧洲成人在线视频| 国产jzjzjz丝袜老师水多| 丝袜美腿亚洲一区二区图片| 成人h猎奇视频网站| 香蕉国产在线视频| 最新中文字幕一区二区三区| 黄色一级视频片| 91精品国产一区二区在线观看| 亚洲黄色在线看| 欧美性x x x| 国产免费成人| 国产66精品久久久久999小说| www.黄在线观看| 午夜精品福利一区二区三区av| 九九九九九伊人| 欧洲专线二区三区| 18一19gay欧美视频网站| www.99视频| 国产精品美女久久久久久| 欧洲黄色一级视频| 国产精品男女| 色综合久久88| 国产视频www| 国产精品情趣视频| 国产v亚洲v天堂无码久久久| 精品福利一区| 欧美高清视频一区二区| 国产精品羞羞答答在线| 国产精品免费视频一区| 18禁男女爽爽爽午夜网站免费| 北条麻妃一区二区三区在线观看 | 国产精品福利在线观看播放| 国产精品黄视频| 韩国中文字幕2020精品| 欧美日韩国产页| 欧美xxxxx精品| 最新亚洲激情| 国产精品一 二 三| 暧暧视频在线免费观看| 精品第一国产综合精品aⅴ| 一区二区在线观看免费视频| 国产一区不卡精品| 热这里只有精品| 91成人在线网站| 久久精品国产免费观看| 国产又黄又粗又长| 亚洲天堂久久久久久久| 天美一区二区三区| 永久91嫩草亚洲精品人人| 亚洲bt欧美bt日本bt| 91国内在线| 精品久久国产老人久久综合| 精品无码免费视频| 91丝袜美腿高跟国产极品老师| 99视频在线免费播放| 婷婷综合电影| 国产精品视频男人的天堂| 97超碰人人在线| 制服丝袜中文字幕亚洲| 91porn在线视频| 风间由美一区二区三区在线观看| 亚洲国产成人精品无码区99| 国内自拍欧美| 国产成人av网址| 91在线视频| 91精品国产综合久久久久久久| 91视频综合网| 福利一区二区在线| 日韩一级在线免费观看| 欧美丰满日韩| 97久久天天综合色天天综合色hd| 国产蜜臀av在线播放| 日韩激情av在线播放| 国产一卡二卡三卡| 亚洲欧美另类在线| 黄色免费视频网站| 日韩不卡免费视频| 激情五月五月婷婷| 日韩福利视频一区| 成人高h视频在线| a级片在线免费观看| 亚洲天堂久久av| 国产女人高潮时对白| 精品露脸国产偷人在视频| 91激情视频在线观看| 国产一区二区导航在线播放| 国产96在线 | 亚洲| 国产成人久久| 91亚洲永久免费精品| 九色porny视频在线观看| 一区二区在线视频| 日本精品久久久久久| 欧美色爱综合网| 国产在线视频二区| 日本一区二区三区四区| 激情综合激情五月| 麻豆精品在线看| 欧美二区在线视频| 天天做天天爱天天综合网| 久热国产精品视频一区二区三区| 免费日韩成人| 欧美重口另类videos人妖| 日本一级理论片在线大全| 国产一区二区精品丝袜| 亚洲欧美另类综合| 91精品黄色片免费大全| 男人天堂av在线播放| 亚洲成人av在线电影| 国精产品一区一区二区三区mba | 亚洲www在线观看| 中文字幕色婷婷在线视频| 欧美剧在线观看| 999国产在线视频| 亚洲精品一区二三区不卡| а√中文在线资源库| 欧美日韩国产区一| 丰满少妇xoxoxo视频| 亚洲成在人线在线播放| 亚洲怡红院在线观看| 国产三级三级三级精品8ⅰ区| 野战少妇38p| 国产精品一二三区在线| 国产福利在线免费| 日韩高清不卡在线| 日本va中文字幕| 亚洲欧美大片| 欧美精品久久久久久久久久久| 91精品国产乱码久久久久久久| 日韩欧美在线一区二区| 欧美**字幕| 欧美精品123| 妖精一区二区三区精品视频 | 天海翼亚洲一区二区三区| 高清一区二区三区视频| 欧美成人精品一级| 亚洲tv在线观看| 99综合久久| 成人福利免费观看| 久久91超碰青草在哪里看| 国产精品视频精品| 久久精品 人人爱| 国产精品午夜视频| av在线不卡精品| 国产精品久久久久久久久久久久久| 欧美国产大片| 国产精品美女www爽爽爽视频| 色综合一本到久久亚洲91| 青青草成人在线| 成人日韩精品| 国产精品一区二区三区久久| 狠狠久久综合| 91中文在线观看| 99re6热只有精品免费观看| 国产精品大全| 天堂网av成人| 日韩精品一区二区三区色偷偷| 国产欧美日韩精品一区二区三区 | 精品视频一区二区三区四区五区| 日本国产精品视频| 国产激情久久| 亚洲影视九九影院在线观看| 中文字幕一区二区三区日韩精品| 粉嫩av一区二区三区免费观看| 久久夜色电影| 欧美精品一区二区三区在线四季 | 欧美日本乱大交xxxxx| 91在线公开视频| 日韩精品中文字幕在线不卡尤物| 秋霞网一区二区| 国产视频自拍一区| 麻豆网站在线看| 欧美精品videos| 色戒汤唯在线观看| 国产精品欧美一区二区三区奶水| 只有精品亚洲| 国产精品久久久久免费| 国产99精品| 国产又粗又爽又黄的视频 | 国自产拍偷拍精品啪啪一区二区 | 中文字幕欧美激情一区| 男女视频在线观看网站| 风间由美性色一区二区三区| 亚洲第一香蕉网| 自拍偷在线精品自拍偷无码专区 | 欧美视频在线观看免费网址| 亚洲精品国产精品乱码视色| 欧美一区二区三区免费大片| 天天操天天插天天射| 中文字幕不卡av| 青草视频在线免费直播| 国产精品video| 色悠久久久久综合先锋影音下载| 裸模一区二区三区免费| 久久精品青草| 男人天堂网视频| 国产一区二区毛片| 色哟哟精品观看| 亚洲精品成人精品456| 免费污污视频在线观看| 欧美一二三区在线观看| 免费毛片在线| 欧美黄色三级网站| 欧美大陆国产| 麻豆亚洲一区| 欧美日韩精品一本二本三本 | 野花国产精品入口| 国内自拍第二页| 久久久久久电影| 免费中文字幕在线观看| 欧美三级欧美一级| 日本亚洲欧美| 欧美国产高跟鞋裸体秀xxxhd| 高清av一区二区三区| 精品在线观看一区二区| 欧美二区视频| xxww在线观看| 91亚洲精品乱码久久久久久蜜桃| 农村黄色一级片| 欧美精品久久一区二区三区| 欧美日本韩国一区二区| 国产做受高潮69| 成人台湾亚洲精品一区二区| 中文字幕成人一区| 美女国产一区二区| 免费看日本黄色片| 色综合一区二区| 日韩精品视频无播放器在线看| 欧美精品18videos性欧美| 日韩精品成人在线观看| 制服国产精品| 久久精品av麻豆的观看方式| 手机看片日韩av| 欧美在线短视频| 福利片在线看| 国产激情999| 精品freesex老太交| 国产成人精品视频ⅴa片软件竹菊| 白白色亚洲国产精品| 国产亚洲欧美精品久久久久久| 日韩一区二区免费在线电影| av免费看在线| 成人在线免费观看一区| 欧美日本一区| 亚洲精品成人无码毛片| 亚洲国产精品久久人人爱| 少妇喷水在线观看| 久久免费视频网站| 噜噜噜狠狠夜夜躁精品仙踪林| 很污的网站在线观看| a级精品国产片在线观看| 日韩精品手机在线| 亚洲精品视频在线观看视频| 在线天堂新版最新版在线8| 日本高清不卡三区| 美女爽到高潮91| 成熟的女同志hd| 亚洲欧美精品午睡沙发| 欧美亚洲日本在线观看| 91丨porny丨蝌蚪视频| 狠狠躁夜夜躁人人爽天天高潮| 亚洲第一页自拍| 岛国在线视频网站| 欧美精品二区三区四区免费看视频| 日韩电影免费在线观看网站| 免费91在线观看| 欧美一区二区三区免费| 国产经典三级在线| 欧美日韩综合网| 免费在线看成人av| 免费三级在线观看| 精品久久人人做人人爰| 久久久美女艺术照精彩视频福利播放| 日韩久久精品视频| 国产亚洲一区精品| 国产精品视频首页| 亚洲一区二区三区av无码| 91看片淫黄大片一级| 中文字幕av片| 欧美成人午夜免费视在线看片| av不卡一区| 女人另类性混交zo| 亚洲码国产岛国毛片在线| 日本人妻丰满熟妇久久久久久|