教你怎樣快速將將10進制轉換爲二進制

一種快速將將10進制轉換爲二進制的方法

今天原本無心中發現NumbertoString方法不是徹底的繼承自Object原型上,而是能夠給其傳參數,這就引發了我比較大的興趣。我就想知道這個傳入的參數到底有啥用?還有Number上的toString方法到底和Object上的toString方法有啥區別。javascript

不一樣數據類型的toString方法分別返回啥

  1. Object 對象的toString 返回的就是表示對象數據類型的字符串 [object Object],進而咱們能夠根據對象toString方法使用Object.prototype.toString.call([arry | number | string | ...]) 來達到精確判斷數據類型的功能好比:java

    const a = []
    const b = ''
    Object.prototype.toString.call(a) // [object Array]
    Object.prototype.toString.call(b) // [object String]
    
    複製代碼
  2. Array上的toString方法分爲兩種狀況數組

    • 數組內元素是簡單數據類型會將數組內的元素用,合併成字符串返回例如:
    const a = [1,2,3,4]
    a.toString() // 1,2,3,4
    複製代碼
    • 數組內元素是複雜數據類型這種狀況下會調用子元素的toString方法
    const a = [{},{}]
    a.toString() // [object Object],[object Object]
    const b = [()=>{},()=>{}]
    b.toString() // ()=>{},()=>{}
    const c = [[1,2],[3,4]]
    c.toString() // 1,2,3,4
    複製代碼

    延申一下,因此咱們徹底能夠經過數組的toString方法來實現join的簡單功能函數

  3. Function上的toString方法,這個就比較簡單了就是純粹的將函數體做爲字符串返回ui

    var a = () => {}
        a.toString() // ()=>{}
    複製代碼
  4. StringtoString方法,就是純粹的返回字符串spa

不同凡響的Number類型的toString方法

Number類型的toString方法到底是啥樣的呢?讓咱們來看看prototype

var a = 1
a.toString() // 1
複製代碼

看起來好像也沒有什麼神奇的地方啊~也就是純粹的將number轉換爲字符串而已,彆着急看看下面的例子code

var a = 2
a.toString(2) // 10
複製代碼

是否是很神奇這裏直接將10進制的數轉換爲了二進制數的字符串表示,根據規定這裏toString的參數爲要轉換的進制範圍爲2-36,利用這個特性咱們很容易的就能夠將一個10進制的數轉換爲任意2-36進制。對象

其實這裏的轉換規則還有其餘規定感興趣的能夠看看MDN和ECMA的具體規定繼承

MDN中關於Number.prototype.toString的介紹