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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Javascript中的valueOf与toString

發布時間:2025/4/9 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Javascript中的valueOf与toString 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本上,javascript中所有數據類型都擁有valueOf和toString這兩個方法,null除外。它們倆解決javascript值運算與顯示的問題,本文將詳細介紹,有需要的朋友可以參考下。

toString()

toString()函數的作用是返回object的字符串表示,JavaScript中object默認的toString()方法返回字符串”[object Object]“。定義類時可以實現新的toString()方法,從而返回更加具有可讀性的結果。JavaScript對于數組對象、函數對象、正則表達式對象以及Date日期對象均定義了更加具有可讀性的toString()方法:

1.array的toString()方法將返回以逗號分隔的數組成員。比如,[1,2,3].toString()會返回字符串”1,2,3″。
2.function的toString()方法將返回函數的文本定義。比如,(function(x){return x*2;}).toString()會返回字符串”function(x){return x*2;}”。
3.RegExp的toString()方法與function的toString()方法類似,將返回正則表達式的文本定義。比如,/\d+/g.toString()會返回字符串”/\\d+/g”。
4.Date的toString()方法將返回一個具有可讀性的日期時間字符串。
5.如果 Boolean 值是 true,則返回 “true”。否則,返回 “false”。

valueOf()

valueOf()函數的作用是返回該object自身。與toString()一樣,定義類時可以實現新的valueOf()方法,從而返回需要的結果。JavaScript對于Date對象定義了更加具有可讀性的valueOf()方法:

1.Date的valueOf()方法將返回一個時間戳數值,該數值為Date對象與1970年1月1日零時的時間差(以毫秒為單位)。其他一律返回對象本身。

在js高程里面有一段代碼:

var colors = ["red", "blue", "green"]; // 創建一個包含3 個字符串的數組 alert(colors.toString()); // red,blue,green alert(colors.valueOf()); // red,blue,green alert(colors); // red,blue,green

三個輸出全部一樣,那么toString()和valueOf()區別到底是什么?看下一個我寫的例子:

var arr = [1,2,3]; alert(Array.isArray(arr.valueOf())); alert(Array.isArray(arr.toString()));

結果是第一個是true而第二個是false,為什么呢,其實valueOf()調用完以后還是返回一個數組。這個數組被alert的時候會調用toString()函數,所以不是valueOf()和toString()函數相同,而是間接的調用了toString()函數!
進一步測試下:

var arr = [1,2,3]; arr.toString = function () { alert("你調用了toString函數"); } alert(arr.valueOf());

結果就是我們會看到“你調用了toString函數”。

而對于數值,我們可以調用valueOf的時候直接可以獲得數字進行計算,不必轉化成字符串,所以不會調用toString。反言之,如果我們需要獲得操作對象的字符串形式的時候就會調用其toString函數。
驗證如下代碼:

var bbb = { i: 10, toString: function() { console.log('toString'); return this.i; }, valueOf: function() { console.log('valueOf'); return this.i; } } alert(bbb);// 10 toString alert(+bbb); // 10 valueOf alert(''+bbb); // 10 valueOf alert(String(bbb)); // 10 toString alert(Number(bbb)); // 10 valueOf alert(bbb == '10'); // true valueOf alert(bbb === '10'); // false

我的理解:valueOf的意思是返回最適合該對象類型的原始值,而toString則是將在該對象類型的原始值以字符串形式返回。

第一個

alert(bbb);// 10 toString

這里我們的alert函數需要是的字符串,所以獲取的是字符串,而不是原始值,故而調用了toString

第二個

alert(+bbb); // 10 valueOf

同理,alert要的是字符串不是原始值,其實是+bbb這個東西被調用了toString,而bbb被調用了valueOf

為了驗證我們這樣寫

var a = { i: 1, valueOf: function () { alert("你調用了a的valueOf函數"); return this.i; }, toString: function () { alert("你調用了a的toString函數"); return this.i; } }; var c = { i: +a, valueOf: function () { alert("你調用了c的valueOf函數"); return this.i; }, toString: function () { alert("你調用了c的toString函數"); return this.i; } }; alert(c);

其中讓c=+a,那么即可知道結果,果然如此,調用了a的valueOf和c的toString

第三個

alert(''+bbb); // 10 valueOf

同理,我們可以把上一段我寫的程序里面的c:+a改成c:'’+a

第四個

alert(String(bbb)); // 10 toString

String這個強制轉換其實在其內部是調用了傳入參數的toString函數……

第五個

alert(Number(bbb)); // 10 valueOf

這個是有區別的,因為bbb的i屬性是數值類型的,如果i為11111xxxxx這樣的字符串,我們就可以看到調用了bbb的toString了
代碼例子:

var c = { i: "11111xxxx", valueOf: function () { alert("你調用了c的valueOf函數"); return this.i; }, toString: function () { alert("你調用了c的toString函數"); return this.i; } }; alert(c);

第六個

alert(bbb == '10'); // true valueOf

這個里面的判等的順序是,獲取原始值,然后判斷兩邊的原始值是否相等,所以調用valueOf

第七個也就是最后一個

alert(bbb === '10'); // false

===操作符不進行隱式轉換,判全等的第一個步驟是判斷類型,因為類型都不一樣了,所以后面什么都不會調用

總結:valueOf偏向于運算,toString偏向于顯示。
1、 在進行強轉字符串類型時將優先調用toString方法,強轉為數字時優先調用valueOf。
2、 在有運算操作符的情況下,valueOf的優先級高于toString。

轉載于:https://www.cnblogs.com/peakleo/p/6248242.html

總結

以上是生活随笔為你收集整理的Javascript中的valueOf与toString的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美日韩一区二区在线观看 | 99视频在线免费 | 国产精品久久久久久一区 | 免费观看的黄色网址 | 蜜桃91精品入口 | 在线看的免费网站 | 亚州av免费| 国产偷自拍视频 | 蜜臀免费av| 高潮久久久 | 夫妻性生活自拍 | 亚洲色图插插插 | 欧美黑粗硬 | yw视频在线观看 | 欧美午夜精品久久久久久浪潮 | 神马午夜888 | 波多野结衣视频一区二区 | 毛片自拍 | 99re这里都是精品 | 啪啪短视频 | 久久高清 | xxxxxx欧美| av影视在线| 一级全黄色片 | 日本色呦呦 | 国产三级在线 | 国产乱国产乱老熟300部视频 | 波多野在线视频 | 国产精品久免费的黄网站 | 97国产精品人人爽人人做 | 日韩一级片网址 | 日本成人网址 | 欧美性猛交xxxx黑人交 | 在线免费观看 | 久久人人艹| 在线不卡一区二区 | 国产情侣小视频 | 爆操91| 99爱视频在线 | hs网站在线观看 | 中文字幕亚洲成人 | 老司机深夜福利影院 | avtt亚洲| 亚洲热影院| 99久久99久久精品国产片 | 日韩有码在线播放 | 日日夜夜精品免费 | 美女扒开大腿让男人桶 | 国产国语性生话播放 | 露脸丨91丨九色露脸 | 97人妻一区二区精品免费视频 | 操色网 | 国产a√精品区二区三区四区 | 九九热av| 国产亚洲精品女人久久久久久 | 亚洲天堂影院 | 特大黑人巨交吊性xx | 免费看av软件 | 一区二区视频 | 九九热精品在线视频 | 国产精品视频一二三区 | 欧美中文字幕 | 精品在线免费视频 | 成人手机在线观看 | 日本少妇性生活 | 俺也去婷婷 | 亚洲精品天堂在线 | 欧美精品大片 | 深夜福利网址 | 日日日干干干 | 国产精品无码电影 | 国产专区一区二区 | 欧美理论在线观看 | 少妇又色又紧又爽又刺激视频 | 日本天天操 | 强伦人妻一区二区三区视频18 | 首尔之春在线观看 | 欧洲亚洲女同hd | 中文字幕免费视频观看 | 91av视频网| 国产99久久久国产精品 | 97爱视频 | 青春草久久 | 精品亚洲在线 | 国产伦子伦对白视频 | 欧美变态网站 | 高跟鞋av | 五月天国产在线 | 日韩av影片| 久久精品男人的天堂 | 国产福利视频网站 | 日韩高清成人 | 午夜在线精品偷拍 | 少妇太紧太爽又黄又硬又爽 | 久久久国产精品一区 | 国产精品1页 | 日韩成人黄色片 | 国产精品成人一区 | 中文字幕一区二区三区四区不卡 |