欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

對(duì)象類型轉(zhuǎn)換時(shí)的分類

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

  • string
  • number
  • default

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

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

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

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

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

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

對(duì)象轉(zhuǎn)換時(shí)的步驟

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

下面是幾個(gè)例子

有[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);

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

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

存在顯示的toString方法

存在顯示聲明的toString()方法,并且不存在其他類型轉(zhuǎn)換方法,例如valueOf()或者[Symbol.toPrimitive],則無論對(duì)象是按照什么類型轉(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

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

  • string
  • number
  • default

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

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

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

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

相關(guān)文章

  • JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等屬性學(xué)習(xí)筆記

    JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等屬性學(xué)

    這篇文章主要介紹了JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等屬性學(xué)習(xí)筆記,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 解決layer.confirm選擇完之后消息框不消失的問題

    解決layer.confirm選擇完之后消息框不消失的問題

    今天小編就為大家分享一篇解決layer.confirm選擇完之后消息框不消失的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • BootStrap智能表單實(shí)戰(zhàn)系列(七)驗(yàn)證的支持

    BootStrap智能表單實(shí)戰(zhàn)系列(七)驗(yàn)證的支持

    這篇文章主要介紹了BootStrap智能表單實(shí)戰(zhàn)系列(七)驗(yàn)證的支持 ,凡是涉及到用戶編輯信息然后保存的頁(yè)面,都涉及到一個(gè)數(shù)據(jù)是否符合要求的檢查,需要客服端和服務(wù)器端的校驗(yàn)的問題,本文介紹非常詳細(xì),具有參考價(jià)值,需要的朋友可以參考下
    2016-06-06
  • 你可能不知道的JavaScript位運(yùn)算符詳解

    你可能不知道的JavaScript位運(yùn)算符詳解

    位運(yùn)算符是在數(shù)字底層(即表示數(shù)字的32個(gè)數(shù)位)進(jìn)行操作的,下面這篇文章主要給大家介紹了一些你可能不知道的JavaScript位運(yùn)算符的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • javascript 中事件冒泡和事件捕獲機(jī)制的詳解

    javascript 中事件冒泡和事件捕獲機(jī)制的詳解

    這篇文章主要介紹了javascript 中事件冒泡和事件捕獲機(jī)制的詳解的相關(guān)資料,網(wǎng)上的相關(guān)資料有很多,但是講的不是多清楚,通過本文希望能讓大家理解掌握,需要的朋友可以參考下
    2017-09-09
  • js倒計(jì)時(shí)顯示實(shí)例

    js倒計(jì)時(shí)顯示實(shí)例

    本文分享了js倒計(jì)時(shí)顯示的實(shí)例,需要的朋友可以參考借鑒,下面就跟小編一起來看看吧
    2016-12-12
  • javascript中判斷json的方法總結(jié)

    javascript中判斷json的方法總結(jié)

    JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,采用完全獨(dú)立于語言的文本格式,是理想的數(shù)據(jù)交換格式。同時(shí),JSON是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON數(shù)據(jù)不須要任何特殊的API或工具包,接下來跟著小編學(xué)習(xí)js中判斷json的方法吧
    2015-08-08
  • IE7提供XMLHttpRequest對(duì)象為兼容

    IE7提供XMLHttpRequest對(duì)象為兼容

    IE7提供XMLHttpRequest對(duì)象為兼容...
    2007-03-03
  • Bootstrap柵格系統(tǒng)使用方法及頁(yè)面調(diào)整變形的解決方法

    Bootstrap柵格系統(tǒng)使用方法及頁(yè)面調(diào)整變形的解決方法

    這篇文章主要介紹了Bootstrap柵格系統(tǒng)使用方法及頁(yè)面調(diào)整變形的解決方法,需要的朋友可以參考下
    2017-03-03
  • Javascript幻燈片播放功能實(shí)現(xiàn)過程解析

    Javascript幻燈片播放功能實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Javascript幻燈片播放功能實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論