最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript對象類型轉(zhuǎn)換的分類及步驟詳解

 更新時間:2023年05月22日 11:51:22   作者:DongL  
這篇文章主要為大家介紹了JavaScript對象類型轉(zhuǎn)換的分類及步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

對象類型轉(zhuǎn)換時的分類

對象轉(zhuǎn)換時先要確定轉(zhuǎn)換的類型,這個類型在對象的[Symbol.toPrimitive]屬性值-函數(shù)的參數(shù)中可以拿到,一共有三種:

  • string
  • number
  • default

string以下兩種情況會將確定對象的轉(zhuǎn)換類型為string:

  • 使用alert(person)
  • 將對象看做是一個對象的屬性來取值時,例如family[person]

number以下兩種情況會將確定對象的轉(zhuǎn)換類型為number:

  • 使用一元數(shù)學操作符,例如alert(+person)
  • 使用比較運算符,例如alert(person > 1)

default其他情況會確定對象的轉(zhuǎn)換類型為default:

  • 相加操作,例如alert(obj + 1)
  • 相等比較,例如alert(obj == 2)

對象轉(zhuǎn)換時的步驟

  • 先看對象內(nèi)有沒有[Symbol.toPrimitive]屬性
  • 如果有,則執(zhí)行該方法
  • 如果沒有,則檢查對象要轉(zhuǎn)換的類型
  • 如果是string,執(zhí)行toString()valueOf()方法,如果其中一種存在的話
  • 如果是number,執(zhí)行valueOf()toString()方法,如果其中一種存在的話
  • 如果是default,執(zhí)行valueOf()toString()方法,如果其中一種存在的話

下面是幾個例子

有[Symbol.toPrimitive]屬性

let obj = {
    name: 'jack',
    money: 1,
    [Symbol.toPrimitive](hint) {
      console.log(hint);
      return hint == 'string' ? this.name : this.money;
    },
  };
  let person = {
    jack: 'property jack',
  };
  // hint equals to string
  alert(obj);  // jack
  alert(person[obj]) // property jack
  // hint equals to number
  alert(+obj); // 1
  alert(obj > 0); // true
  // hint equals to default
  alert(obj + 50); // 51
  • 沒有[Symbol.toPrimitive]屬性
let obj = {
    name: 'jack',
    money: 1,
  };
  // hint equals to string, excutes the toString() and return [object object]
  alert(obj); // [object object]
  // hint equals to number, excutes the valueOf() and return the object itself
  alert(+obj); // NaN  
  // hint equals to default, excutes the valueof() and return the object itself
  alert(obj === obj);  // true  // do the same as (obj.valueOf() === obj);

必須返回一個基礎(chǔ)類型

無論是調(diào)用哪個函數(shù),他都必須返回一個基本數(shù)據(jù)類型,如果返回的不是基本數(shù)據(jù)類型,在嚴格模式下會報錯

存在顯示的toString方法

存在顯示聲明的toString()方法,并且不存在其他類型轉(zhuǎn)換方法,例如valueOf()或者[Symbol.toPrimitive],則無論對象是按照什么類型轉(zhuǎn)換,都執(zhí)行toString()方法。(存在顯示的toString,則只找toString,不找valueOf)

// if there exsits a toString(), and no other functions such as valueOf() or [symbol.toPromitive], then all the conversions will excute toString()
  let obj = {
    name: 'jack',
    money: 1,
    toString() {
      return  this.money;
    },
  };
  alert(obj); // 1
  alert(+obj); // 1 
  alert(obj + 9); // 10

先確定對象是按照什么類型轉(zhuǎn)換,一共有三種類型:

  • string
  • number
  • default

轉(zhuǎn)換規(guī)則:

  • 先看對象內(nèi)有沒有[Symbol.toPrimitive]屬性
  • 如果有,則執(zhí)行該方法
  • 如果沒有,則檢查對象要轉(zhuǎn)換的類型
  • 如果是string,執(zhí)行toString()valueOf()方法,如果其中一種存在的話
  • 如果是number,執(zhí)行valueOf()toString()方法,如果其中一種存在的話
  • 如果是default,執(zhí)行valueOf()toString()方法,如果其中一種存在的話

 翻譯自原文:https://javascript.info/objec...

以上就是JavaScript對象類型轉(zhuǎn)換的分類及步驟詳解的詳細內(nèi)容,更多關(guān)于JavaScript對象類型轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JavaScript實現(xiàn)的多種鼠標拖放效果

    JavaScript實現(xiàn)的多種鼠標拖放效果

    這篇文章主要介紹了JavaScript實現(xiàn)的多種鼠標拖放效果,涉及JavaScript響應(yīng)鼠標事件動態(tài)變換頁面元素屬性的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • JavaScript實現(xiàn)顯示和隱藏圖片

    JavaScript實現(xiàn)顯示和隱藏圖片

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)顯示和隱藏圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • js模擬QQ窗口的抖動效果

    js模擬QQ窗口的抖動效果

    模擬qq抖動效果代碼
    2008-05-05
  • JS:window.onload的使用介紹

    JS:window.onload的使用介紹

    window.onload在某些情況下還是比較實用的,比如加載時執(zhí)行哪些腳本等等,下面有幾個不錯的示例,需要的朋友可以參考下
    2013-11-11
  • 禁用頁面部分JavaScript不是全部而是部分

    禁用頁面部分JavaScript不是全部而是部分

    全部限制那是很簡單的事,直接把<script>腳本塊過濾掉就行了,但是部分限制又是如何做到的呢,下面我們一起來看看
    2014-09-09
  • JavaScript獲取網(wǎng)頁的寬高及如何兼容詳解

    JavaScript獲取網(wǎng)頁的寬高及如何兼容詳解

    這篇文章主要給大家介紹了關(guān)于JavaScript獲取網(wǎng)頁的寬高及如何兼容的相關(guān)資料,主要介紹了三個方式,分別是window.innerWidth / window.innerHeight、document.documentElement.clientWidth以及混雜模式/怪異模式 下的寬高的獲取,需要的朋友可以參考下
    2021-05-05
  • Webpack性能優(yōu)化 DLL 用法詳解

    Webpack性能優(yōu)化 DLL 用法詳解

    本篇文章主要介紹了Webpack DLL 用法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • JS中兩個數(shù)組對象篩選方法

    JS中兩個數(shù)組對象篩選方法

    這篇文章主要介紹了JS中兩個數(shù)組對象篩選,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • js實現(xiàn)用戶離開頁面前提示是否離開此頁面的方法(包括瀏覽器按鈕事件)

    js實現(xiàn)用戶離開頁面前提示是否離開此頁面的方法(包括瀏覽器按鈕事件)

    這篇文章主要介紹了js實現(xiàn)用戶離開頁面前提示是否離開此頁面的方法,較為詳細的分析了javascript針對瀏覽器事件的操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 函數(shù)式編程入門實踐(一)

    函數(shù)式編程入門實踐(一)

    這篇文章主要介紹了Javascript函數(shù)式編程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04

最新評論

浪卡子县| 富裕县| 定西市| 琼中| 临猗县| 汶川县| 宁夏| 巴楚县| 河曲县| 开江县| 桂平市| 山西省| 吉水县| 长子县| 图木舒克市| 张家口市| 香格里拉县| 通河县| 海兴县| 庐江县| 三穗县| 长武县| 乡城县| 七台河市| 饶阳县| 泗洪县| 北宁市| 梨树县| 朝阳区| 黑水县| 如东县| 广安市| 杂多县| 古浪县| 保定市| 工布江达县| 班玛县| 海盐县| 进贤县| 万盛区| 象山县|