91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript對象轉原始值是什么

發布時間:2021-12-10 16:46:51 來源:億速云 閱讀:130 作者:iii 欄目:開發技術

這篇文章主要講解了“JavaScript對象轉原始值是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JavaScript對象轉原始值是什么”吧!

    Object.prototype.valueOf()

    對象的valueOf旨在返回對象的原始值,會在需要將對象轉換成原始值的地方自動執行。詳細點這里。

    Object.prototype.toString()

    toString()方法會返回表示該對象的字符串,會在對象預期要被轉換成字符串的地方自動執行。對象默認的toString()方法會返回[object type],這個type就是對象構造函數的名稱。詳細點這里。

    Symbol.toPrimitive

    Symbol.toPrimitive(hint)方法作用同valueOf()一樣,但是優先級要高于valueOf();而且該方法還會接受一個參數hint,這個參數用來表示期望轉換的原始值的具體類型,有以下幾種:

    • number:數字類型

    • string:字符串類型

    • default:默認

    let obj = {
      [Symbol.toPrimitive](hint) {
        switch (hint) {
          case 'number':
            return 123;
          case 'string':
            return 'str';
          case 'default':
            return 'default';
          default:
            throw new Error();
         }
       }
    };
    2 * obj // 246
    3 + obj // '3default'
    obj == 'default' // true
    String(obj) // 'str'

    對象轉換原始值

    以上三種方法都是在對象被預期轉換成某種原始值時觸發。

    1. 預期被轉換成字符串類型

    對應的hint類型為string

    進行輸出的地方,如alert()

    String(obj)

    let a = {
      toString () {
        return '2'
      }
    }
    console.log(String(a)) // 2

    字符串連接(+)操作

    let a = {
      toString () {
        return '2'
      }
    }
    console.log(a + 'vv')

    模板字符串

    let a = {
      [Symbol.toPrimitive] (hint) {
        console.log(hint) // string
        return 2
      }
    }
    console.log(`你是老${a}?`) // 你是老2?

    2. 預期被轉換成數字類型

    對應的hint類型為numbe

    除法:

    let a = {
      valueOf () {
        return 2
      }
    }
    console.log(2 / a, a / 2) // 1  1

    Number(obj):

    let a = {
      [Symbol.toPrimitive] (hint) {
        console.log(hint) // number
        return 2
      }
    }
    console.log(Number(a)) // 2

    正負號(注意不是加減運算):

    let a = {
      [Symbol.toPrimitive] (hint) {
        console.log(hint) // number
        return 2
      }
    }
    console.log(+a) // 2
    console.log(-a) // -2

    3. 預期被轉換成默認類型(其他)

    對應的hint類型為default

    數字加法(即與對象相加的一方為數字類型):

    let a = {
      [Symbol.toPrimitive] (hint) {
        console.log(hint) // default
        return 2
      }
    }
    console.log(1 + a) // 3

    這一點有點意外,原以為像這種情況預期轉換的類型應該是數字類型,但事實上卻是default;

    布爾運算:所有對象都被轉換成true;

    let a = {
      [Symbol.toPrimitive] (hint) {
        console.log(hint) // 沒有觸發
        return false
      }
    }
    console.log(Boolean(a), a && 123) // true 123

    布爾運算包括==

    三種方法觸發的順序

    首先判斷對象是否有Symbol.toPrimitive(hint)方法,若有則執行該方法,沒有則執行下面的步驟;

    如果預期被轉換成字符串類型時,則優先執行toString()方法;

    如果預期被轉換成默認類型或者數字類型時,則優先執行valueOf()方法:

    :若沒有valueOf()方法,但是定義了toString()方法,則會執行toString()方法;

    感謝各位的閱讀,以上就是“JavaScript對象轉原始值是什么”的內容了,經過本文的學習后,相信大家對JavaScript對象轉原始值是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    武威市| 沁水县| 四平市| 剑河县| 霸州市| 长阳| 太白县| 马关县| 蒲城县| 吉水县| 开封市| 延庆县| 德庆县| 大宁县| 普安县| 闻喜县| 景洪市| 抚松县| 泸溪县| 万宁市| 大埔区| 兴城市| 大田县| 和田县| 瑞金市| 温泉县| 泗阳县| 崇文区| 会东县| 旬邑县| 霸州市| 上蔡县| 梨树县| 台北县| 乌苏市| 安徽省| 永春县| 得荣县| 辽源市| 胶州市| 贺兰县|