日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

通过JS原型定义字符串格式化方法

發布時間:2025/3/17 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过JS原型定义字符串格式化方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

初識原型

在python中,我們可以通過format方法來格式化字符串,比如:

>>> s = 'I am {name}'.format(name='Ayhan') >>> s 'I am Ayhan'


可是,JavaScript中的String類型并沒有內置的格式化方法,那么怎么解決這一問題呢?通過JS原型來為類增加方法。首先我們看一下定義JS原型的基本格式:Object.prototype.method= function () {}

<script>String.prototype.nb = function (args) {console.log(args);};var name = 'Ayhan';name.nb(666);</script>

說明:為String類型增加nb方法;實例化一個String對象name,除了String類型固有的方法,name還能調用新增加的nb方法。

準備知識:replace 和 正則

我們知道,格式化字符串其實就是一個匹配和替換的過程。在通過JS原型為String類型新增format方法前,我們先看看JavaScript中字符串對象的replace()方法:

var name="ayhan"; "ayhan"name.replace("a", "A") "Ayhan"


除了以上這種常規的replace(old, new)用法外,該方法的new其實還可以是一個回調函數,用該函數的返回值對old進行替換:replace(old, function(){}):

var name = "ayhan";name.replace("a", function () {return "A"; }); "Ayhan"


下面我們通過正則來替代old:

var people = "name{ayhan}, age{27}";people.replace(/\{(\w+)\}/g, function (k, v, i) {console.log(k, v, i); }); /* 打印結果 {ayhan} ayhan 4 {27} 27 16 */

說明:

  • /re/是正則表達式,g是全局匹配;每匹配成功一次,執行一次回調函數;
  • 觀察打印結果可以發現,k匹配分組內容, v匹配內容, i索引,其中對我們有用的前兩個參數,因此,如果通過第二個參數將內容匹配到,并進行替換,就可以完成字符串{}內容的格式化。
  • 定義format方法

    基于以上分析,我們來結合JS原型,replace方法,正則,為String類型新增一個format方法:

    <script>String.prototype.format = function (dict) {return this.replace(/\{(\w+)\}/g, function (s, i) {return dict[i];});};</script>

    說明:

  • 這里的this指調用該方法的對象本身,類似于python類中的self;

  • replace(re, function(){})通過正則匹配字符,并用回調函數的返回值替換字符;

  • format方法接收一個字典dict,用匹配的內容i作為key, 從dict中取值作為replace回調函數的返回值,替換正則匹配的字符。


  • 使用:

    dict = {'name': 'Ayhan', "age": "27"}; var people = "My name is {name}, and i am {age}"; people.format(dict); /* "My name is Ayhan, and i am 27" */

    補充:JS面向對象

    在JS中,定義類通過如下方式:

    var Car = function () {this.wheels = 4;this.engines = 2;this.seats = 1;this.drive = function () {console.log('do something');} }; // 或者 function Car() {console.log('此處省略好幾行...') }

    我們可以在類中定義方法,但是每實例化一個對象:car = new Car()該對象都會擁有類中定義方法的一份拷貝,這樣是很占內存的。更好的方法是通過原型來為類擴展方法:

    Car.prototype.drive = function() {console.log('do something'); };


    更多JS面向對象,參考JavaScript基礎二

    總結

    以上是生活随笔為你收集整理的通过JS原型定义字符串格式化方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。