各種型的 toString 方法合集

toString()

Object.prototype.toString()
Array.prototype.toString()
Boolean.prototype.toString()
RegExp.prototype.toString()
String.prototype.toString()
Number.prototype.toString()
Function.prototype.toString()
Date.prototype.toString()

Array,Boolean,RegExp,String,Number,Function,Date這些都是覆蓋了 ObjecttoString 方法數組

Object.prototype.toString()

返回一個表示該對象的字符串this

來自MDN的描述: 每一個對象都有一個toString()方法,當該對象被表示爲一個文本值時,或者一個對象以預期的字符串方式引用時自動調用。默認狀況下,toString()方法被每一個Object對象繼承。若是此方法在自定義對象中未被覆蓋,toString() 返回 "[object type]",其中type是對象的類型
var obj = new Object()
obj.toString() // "[object Object]"

能夠覆蓋默認的 toString 方法

toString() 方法不能傳入參數, 必需要返回一個字符串prototype

function Person(name, age) {
  this.name = name
  this.age = age
}
Person.prototype.toString = function() {
  return 'my name is ' + this.name + ', my age is ' + this.age
}
var fe = new Person('fe_feng', 23)
fe.toString() // "my name is fe_feng, my age is 23"

使用 toString() 檢測對象類型

var toString = Object.prototype.toString;

toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]

//Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]

Boolean.prototype.toString()

返回指定的布爾對象的字符串形式
返回值爲 "true" 或者 "false"
Boolean 對象覆蓋了 Object 對象的 toString 方法
沒有繼承 Object.prototype.toString()
當一個 Boolean 對象做爲文本值或進行字符串鏈接時, JS會自動調用其 toString 方法code

'1' + true  // "1true"

Array.prototype.toString()

返回一個表示指定的數組及其元素的字符串。
Array 對象覆蓋了 ObjecttoString 方法
toString 方法鏈接數組並返回一個字符串,其中包含用逗號分隔的每一個數組元素對象

運用這個方法,能夠處理數組扁平化, 不過有一些限制。繼承

  • 當數組元素都是字符串時,扁平化處理很簡單
function flatten(arr) {
    return arr.toString().split(',')
}
  • 當數組元素都是數字時,扁平化處理以下
function flatten(arr) {
  return arr.toString().split(',').map(item => +item)
}
  • 當數組元素不肯定時候,這個方法就不行了(返回的數組會改變原數組對象)

Number.prototype.toString()

返回指定 Number 對象的字符串表示形式ip

numObj.toString([radix]) 
// radix: 指定要用於數字到字符串的轉換的基數(從2到36)。若是未指定 radix 參數,則默認值爲 10。
// 若是 toString() 的 radix 參數不在 2 到 36 之間,將會拋出一個 RangeError。
栗子來源 MDN
var count = 10;

console.log(count.toString());    // 輸出 '10'
console.log((17).toString());     // 輸出 '17'
console.log((17.2).toString());   // 輸出 '17.2'

var x = 6;

console.log(x.toString(2));       // 輸出 '110'
console.log((254).toString(16));  // 輸出 'fe'

console.log((-10).toString(2));   // 輸出 '-1010'
console.log((-0xff).toString(2)); // 輸出 '-11111111'
相關文章
相關標籤/搜索