摘要:返回最適合該對象類型的原始值將該對象的原始值以字符串形式返回。這兩個(gè)方法一般是交由去隱式調(diào)用,以滿足不同的運(yùn)算情況。進(jìn)行強(qiáng)轉(zhuǎn)字符串類型時(shí)將優(yōu)先調(diào)用方法,強(qiáng)轉(zhuǎn)為數(shù)字時(shí)優(yōu)先調(diào)用。在有運(yùn)算操作符的情況下,的優(yōu)先級高于。
valueOf():返回最適合該對象類型的原始值;
toString(): 將該對象的原始值以字符串形式返回。
這兩個(gè)方法一般是交由JS去隱式調(diào)用,以滿足不同的運(yùn)算情況。
在數(shù)值運(yùn)算里,會(huì)優(yōu)先調(diào)用valueOf(),在字符串運(yùn)算里,會(huì)優(yōu)先調(diào)用toString()。
let e2 = { n : 2, toString : function (){ console.log("this is toString") return this.n }, valueOf : function(){ console.log("this is valueOf") return this.n*2 } } alert(e2) // 2 this is toString alert(+e2) // 4 this is valueOf alert(""+e2) // 4 this is valueOf alert(String(e2)) // 2 this is toString alert(Number(e2)) // 4 this is valueOf alert(e2 == "4") // true this is valueOf alert(e2 === 4) //false ===操作符不進(jìn)行隱式轉(zhuǎn)換
第三個(gè)alert,之所以會(huì)調(diào)用valueOf是因?yàn)椋涸谟羞\(yùn)算操作符的情況下,valueOf的優(yōu)先級高于toString
看接下來的兩給例子:
let e3 = { n : 2, toString : function (){ console.log("this is toString") return this.n } } alert(e3) // 2 this is toString alert(+e3) // 2 this is toString alert(""+e3) // 2 this is toString alert(String(e3)) // 2 this is toString alert(Number(e3)) // 2 this is toString alert(e3 == "2") // true this is toString alert(e3 === 2) //false ===操作符不進(jìn)行隱式轉(zhuǎn)換
Object.prototype.toString = null; let e4 = { n : 2, valueOf : function(){ console.log("this is valueOf") return this.n*2 } } alert(e4) // 4 this is valueOf alert(+e4) // 4 this is valueOf alert(""+e4) // 4 this is valueOf alert(String(e4)) // 4 this is valueOf alert(Number(e4)) // 4 this is valueOf alert(e4 == "4") // true this is valueOf alert(e4 === 4) //false ===操作符不進(jìn)行隱式轉(zhuǎn)換
修改過的toString與ValueOf調(diào)用順序
哪個(gè)修改先調(diào)用哪個(gè)
總結(jié):
進(jìn)行對象轉(zhuǎn)換時(shí)(alert(e2)),優(yōu)先調(diào)用toString方法,如沒有重寫toString將調(diào)用valueOf方法,如果兩方法都不沒有重寫,但按Object的toString輸出。
進(jìn)行強(qiáng)轉(zhuǎn)字符串類型時(shí)將優(yōu)先調(diào)用toString方法,強(qiáng)轉(zhuǎn)為數(shù)字時(shí)優(yōu)先調(diào)用valueOf。
在有運(yùn)算操作符的情況下,valueOf的優(yōu)先級高于toString。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/82598.html
alert(): 有阻塞作用,不點(diǎn)擊確定,后續(xù)代碼無法繼續(xù)執(zhí)行 alert()只能輸出string,如果alert輸出的是對象會(huì)自動(dòng)調(diào)用toString()方法 e.g. alert([a,b,c]);//a,b,c alert不支持多個(gè)參數(shù)的寫法,只能輸出第一個(gè)值 e.g. alert(1,2,3);//1 console.log(): 在打印臺(tái)輸出 可以打印任何類型的...
摘要:一元運(yùn)算符一元運(yùn)算符只能操作一個(gè)值。邏輯非邏輯非參考數(shù)據(jù)判斷邏輯非運(yùn)算符可以用于任何值。無論這個(gè)值是什么數(shù)據(jù)類型,這個(gè)運(yùn)算符都會(huì)返回一個(gè)布爾值。 前端學(xué)習(xí):教程&開發(fā)模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關(guān)注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:運(yùn)算符 JavaScript-運(yùn)算符 JavaScript 有一系列操作數(shù)據(jù)值的運(yùn)算符,運(yùn)算符按照特定運(yùn)算規(guī)則對...
摘要:注意交易時(shí)間超過一年的訂單無法提交退款微信支付退款支持單筆交易分多次退款,多次退款需要提交原支付訂單的商戶訂單號和設(shè)置不同的退款單號。 本文是【淺析微信支付】系列文章的第八篇,主要講解商戶如何處理微信申請退款、退款回調(diào)、查詢退款接口,其中有一些坑的地方,會(huì)著重強(qiáng)調(diào)。 淺析微信支付系列已經(jīng)更新七篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:查詢訂單和關(guān)閉訂單 淺析微信支付:支...
摘要:本文是淺析微信支付系列文章的第五篇,主要講解如何調(diào)用統(tǒng)一下單接口生成預(yù)支付單及調(diào)起支付頁面。淺析微信支付系列已經(jīng)更新四篇了喲,沒有看過的朋友們可以看一下哦。 本文是【淺析微信支付】系列文章的第五篇,主要講解如何調(diào)用統(tǒng)一下單接口生成預(yù)支付單及調(diào)起支付頁面。 淺析微信支付系列已經(jīng)更新四篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:微信公眾號網(wǎng)頁授權(quán) 淺析微信支付:開發(fā)前的準(zhǔn)備 ...
摘要:中默認(rèn)的方法返回字符串。的方法將返回一個(gè)具有可讀性的日期時(shí)間字符串。函數(shù)的作用是返回該自身。其他一律返回對象本身。在有運(yùn)算操作符的情況下,的優(yōu)先級高于。 +{ a: 1, toString: function() { return 10 }, valueOf: function() { return 100 } } 以上引申出對象數(shù)據(jù)的轉(zhuǎn)換的問題:所有對象繼承了兩個(gè)轉(zhuǎn)換方法: toS...
閱讀 2917·2021-09-28 09:36
閱讀 4049·2021-09-22 15:52
閱讀 3726·2021-09-06 15:00
閱讀 2017·2021-09-02 15:40
閱讀 2859·2021-09-02 15:15
閱讀 3571·2021-08-17 10:15
閱讀 2839·2019-08-30 15:53
閱讀 2140·2019-08-29 18:39