国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

淺析toString與valueOf

lpjustdoit / 2389人閱讀

摘要:返回最適合該對象類型的原始值將該對象的原始值以字符串形式返回。這兩個方法一般是交由去隱式調用,以滿足不同的運算情況。進行強轉字符串類型時將優先調用方法,強轉為數字時優先調用。在有運算操作符的情況下,的優先級高于。

valueOf():返回最適合該對象類型的原始值;
toString(): 將該對象的原始值以字符串形式返回。

這兩個方法一般是交由JS去隱式調用,以滿足不同的運算情況。
在數值運算里,會優先調用valueOf(),在字符串運算里,會優先調用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 ===操作符不進行隱式轉換

第三個alert,之所以會調用valueOf是因為:在有運算操作符的情況下,valueOf的優先級高于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  ===操作符不進行隱式轉換
    
    
   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  ===操作符不進行隱式轉換
    
 

修改過的toString與ValueOf調用順序

 哪個修改先調用哪個

總結:

進行對象轉換時(alert(e2)),優先調用toString方法,如沒有重寫toString將調用valueOf方法,如果兩方法都不沒有重寫,但按Object的toString輸出。

進行強轉字符串類型時將優先調用toString方法,強轉為數字時優先調用valueOf。

在有運算操作符的情況下,valueOf的優先級高于toString。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/82598.html

相關文章

  • 淺析-js的alert()console.log()區別

    alert(): 有阻塞作用,不點擊確定,后續代碼無法繼續執行 alert()只能輸出string,如果alert輸出的是對象會自動調用toString()方法 e.g. alert([a,b,c]);//a,b,c alert不支持多個參數的寫法,只能輸出第一個值 e.g. alert(1,2,3);//1 console.log(): 在打印臺輸出 可以打印任何類型的...

    YFan 評論0 收藏0
  • 溫故js系列(4)-運算符詳解

    摘要:一元運算符一元運算符只能操作一個值。邏輯非邏輯非參考數據判斷邏輯非運算符可以用于任何值。無論這個值是什么數據類型,這個運算符都會返回一個布爾值。 前端學習:教程&開發模塊化/規范化/工程化/優化&工具/調試&值得關注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:運算符 JavaScript-運算符 JavaScript 有一系列操作數據值的運算符,運算符按照特定運算規則對...

    王軍 評論0 收藏0
  • 淺析微信支付:申請退款、退款回調接口、查詢退款

    摘要:注意交易時間超過一年的訂單無法提交退款微信支付退款支持單筆交易分多次退款,多次退款需要提交原支付訂單的商戶訂單號和設置不同的退款單號。 本文是【淺析微信支付】系列文章的第八篇,主要講解商戶如何處理微信申請退款、退款回調、查詢退款接口,其中有一些坑的地方,會著重強調。 淺析微信支付系列已經更新七篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:查詢訂單和關閉訂單 淺析微信支付:支...

    silenceboy 評論0 收藏0
  • 淺析微信支付:統一下單接口

    摘要:本文是淺析微信支付系列文章的第五篇,主要講解如何調用統一下單接口生成預支付單及調起支付頁面。淺析微信支付系列已經更新四篇了喲,沒有看過的朋友們可以看一下哦。 本文是【淺析微信支付】系列文章的第五篇,主要講解如何調用統一下單接口生成預支付單及調起支付頁面。 淺析微信支付系列已經更新四篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:微信公眾號網頁授權 淺析微信支付:開發前的準備 ...

    ytwman 評論0 收藏0
  • 關于Javascript中的valueOftoString

    摘要:中默認的方法返回字符串。的方法將返回一個具有可讀性的日期時間字符串。函數的作用是返回該自身。其他一律返回對象本身。在有運算操作符的情況下,的優先級高于。 +{ a: 1, toString: function() { return 10 }, valueOf: function() { return 100 } } 以上引申出對象數據的轉換的問題:所有對象繼承了兩個轉換方法: toS...

    lvzishen 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<