亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

深入理解Javascript中的valueOf與toString

2019-11-19 18:08:57
字體:
來源:轉載
供稿:網友

基本上,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。

下面給大家簡單說下valueof和tostring的區別。

valueOf():返回最適合該對象類型的原始值;

toString(): 將該對象的原始值以字符串形式返回。

這兩個方法一般是交由JS去隱式調用,以滿足不同的運算情況。

在數值運算里,會優先調用valueOf(),如a + b;

在字符串運算里,會優先調用toString(),如alert(c)。

以上所述是小編給大家介紹的Javascript中的valueOf與toString,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
俺去啦;欧美日韩| 成人xvideos免费视频| 国产在线一区二区三区| 日韩综合中文字幕| 日韩一二三在线视频播| 91久久国产精品91久久性色| 久久精品国产一区二区三区| 亚洲淫片在线视频| 久久综合免费视频影院| 中文字幕久精品免费视频| 国产精品永久免费观看| 国产精品视频精品| 色中色综合影院手机版在线观看| 亚洲xxxxx电影| 91精品视频网站| 国产不卡av在线| 亚洲第一网站男人都懂| 麻豆精品精华液| 欧美成人一区二区三区电影| 久久精品视频导航| 日韩欧美国产激情| 久久久久久久网站| 色yeye香蕉凹凸一区二区av| 日韩中文字幕在线免费观看| 亚洲综合小说区| 日本久久久久亚洲中字幕| 免费97视频在线精品国自产拍| 亚洲成人黄色在线观看| 黄色成人在线播放| 成人午夜高潮视频| 久久伊人91精品综合网站| 成人乱人伦精品视频在线观看| 国产裸体写真av一区二区| 亚洲精品美女在线观看播放| 日本韩国在线不卡| 国产精品日日做人人爱| www.久久久久| 欧美性xxxx极品hd满灌| 国产欧美日韩丝袜精品一区| 九九九久久久久久| 狠狠久久五月精品中文字幕| 久久夜精品va视频免费观看| 欧美另类暴力丝袜| 成人免费观看49www在线观看| 国产日韩av在线播放| 久久久久久中文字幕| 欧美精品在线看| 久久久久久久影视| 国产精品最新在线观看| 国a精品视频大全| 久久成人在线视频| 国产91精品不卡视频| 国产精国产精品| 精品久久久久久国产| 欧美性一区二区三区| 亚洲第一精品夜夜躁人人躁| 麻豆国产精品va在线观看不卡| 亚洲欧美日韩精品久久| 国产精品欧美一区二区三区奶水| 久久网福利资源网站| 精品欧美aⅴ在线网站| 午夜精品三级视频福利| 国产成人精品免高潮费视频| 日本成熟性欧美| 欧美中文字幕在线观看| 欧美日韩在线观看视频| 少妇高潮久久久久久潘金莲| 综合欧美国产视频二区| 亚洲男人的天堂网站| 欧美日韩在线视频一区| 亚洲精品日韩激情在线电影| 日韩美女免费视频| 欧美xxxx做受欧美.88| 97精品国产97久久久久久春色| 正在播放国产一区| 亚洲高清不卡av| 国产精品亚洲美女av网站| 亚洲美女在线观看| 精品国偷自产在线视频99| 2023亚洲男人天堂| www.欧美精品| 国产精品露脸av在线| 日韩精品在线免费观看| 欧美高清在线播放| 亚洲天堂av在线免费| 欧美怡春院一区二区三区| 精品久久久久久久大神国产| 九九九久久国产免费| 国产主播在线一区| 中文日韩在线观看| 热99在线视频| 久久精品久久久久久国产 免费| 国产精品18久久久久久首页狼| 久久精彩免费视频| 国产欧美最新羞羞视频在线观看| 8050国产精品久久久久久| 久久久久久久久久婷婷| 国产999在线| 国产成人拍精品视频午夜网站| 88国产精品欧美一区二区三区| 久久久久久久电影一区| 国产日韩在线看片| 国产精品久久久久久久久久ktv| 欧美性生交xxxxxdddd| 欧美视频13p| 欧美老女人xx| 国外成人免费在线播放| 国产精品视频最多的网站| 国产精品美女呻吟| 欧美性高跟鞋xxxxhd| 自拍偷拍亚洲一区| 亚洲天堂久久av| 成人h视频在线| 国产一区视频在线播放| 亚洲护士老师的毛茸茸最新章节| 亚洲欧美中文日韩v在线观看| 色综合导航网站| 中文日韩在线观看| 91久久精品国产91久久| 日本乱人伦a精品| 亚洲视频在线看| 亚洲国产精品久久久久秋霞蜜臀| 91精品国产91久久久久久久久| 亚洲另类激情图| 色综合亚洲精品激情狠狠| 国产综合色香蕉精品| 精品视频在线播放色网色视频| 欧美亚洲成人xxx| 日韩在线中文字幕| 国产精品视频一区二区三区四| 日韩精品免费综合视频在线播放| 欧美性猛交xxxx偷拍洗澡| 懂色aⅴ精品一区二区三区蜜月| 欧美日韩国产综合视频在线观看中文| 在线看日韩av| 日韩欧美大尺度| 成人免费在线视频网站| 97高清免费视频| 国产精品一二三视频| 91精品国产91久久久久| 色播久久人人爽人人爽人人片视av| 欧美午夜片欧美片在线观看| 欧美亚洲成人精品| 日韩电影在线观看永久视频免费网站| 亚洲一区二区三区香蕉| 久久中文字幕在线视频| 91香蕉嫩草影院入口| 国产精品视频免费在线| 色哟哟网站入口亚洲精品| 日韩最新中文字幕电影免费看| 在线电影欧美日韩一区二区私密| 亚洲片在线资源| 热久久99这里有精品| 7777kkkk成人观看| 亚洲欧美国产高清va在线播| 亚洲高清久久久久久| www国产91| 97**国产露脸精品国产| 美女撒尿一区二区三区| 亚洲第一页自拍| 久久亚洲精品一区二区| 成人精品网站在线观看| 中文字幕在线看视频国产欧美在线看完整| 国产91精品不卡视频|