本篇文章帶給大家的內容是關於Javascript中的valueOf與toString的對比介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
+{ a: 1, toString: function() { return '10' }, valueOf: function() { return '100' } }
以上引申出物件資料的轉換的問題:
所有物件繼承了兩個轉換方法:
toString(): 它的作用是返回一個反映這個物件的字串
valueOf():它的作用是傳回它對應的原始值
##toString( )
toString()函數的作用是傳回object的字串表示。JavaScript中object預設的toString()方法傳回字串」[object Object]「。定義類別時可以實作新的toString()方法,從而傳回更有可讀性的結果。
JavaScript對於
陣列物件、函數物件、正規表示式物件以及Date日期物件都定義了更具可讀性的toString()方法:
var arr = [1, 2, 3] arr.toString() // "1,2,3"
var fun = function() { return 'fun' } fun.toString() // "function() { return 'fun' }"
var reg = /d+/g reg.toString() // "/d+/g"
var date = new Date() date.toString() // "Tue Feb 12 2019 14:04:36 GMT+0800 (中国标准时间)"
var boolean = true boolean.toString() // "true"
valueOf()
valueOf()函數的作用是傳回該object本身。與toString()一樣,定義類別時可以實作新的valueOf()方法,從而傳回所需的結果。
JavaScript對於Date物件定義了更具有可讀性的valueOf()方法:
1970年1月1日零時的時間差(以毫秒為單位)。
var date = new Date() date.valueOf() // 1549951476233
var colors = ["red", "blue", "green"] // 创建一个包含3 个字符串的数组 alert(colors.toString()) // red,blue,green alert(colors.valueOf()) // red,blue,green alert(colors) // red,blue,green
var arr = [1,2,3] alert(Array.isArray(arr.valueOf())) // true alert(Array.isArray(arr.toString())) // false
進一步測試下:
var arr = [1,2,3] arr.toString = function () { alert("调用了toString函数"); } alert(arr.valueOf()) // "调用了toString函数"
驗證如下程式碼:
var test = { value: 10, toString: function() { console.log('toString') return this.value }, valueOf: function() { console.log('valueOf') return this.value } } alert(test) // 10 toString alert(+test) // 10 valueOf alert('' + test) // 10 valueOf alert(String(test)) // 10 toString alert(Number(test)) // 10 valueOf alert(test == '10') // true valueOf alert(test === '10') // false
範例1
alert(test) // 10 toString
範例2
alert(+test) // 10 valueOf
為了驗證我們這樣寫:
var test = { value: 1, valueOf: function () { alert("调用了test的valueOf函数") return this.value }, toString: function () { alert("调用了test的toString函数") return this.value } }; var test2 = { value: +test, valueOf: function () { alert("调用了test2的valueOf函数") return this.value; }, toString: function () { alert("调用了test2的toString函数") return this.value } }; alert(test2) // 调用了test的valueOf函数 // 调用了test2的toString函数 // 1
alert('' + test) // 10 valueOf
alert(String(test)) // 10 toString
#範例5
alert(Number(test)) // 10 valueOf
alert(test == '10') // true valueOf
alert(test === '10') // false
總結
valueOf偏向運算,toString偏向顯示。
在進行強轉字串類型時將優先呼叫toString方法,強轉為數字時優先呼叫valueOf。 在有運算運算子的情況下,valueOf的優先權高於toString。 下面給大家簡單說下valueof和tostring的差別:valueOf():傳回最適合該物件類型的原始值toString(): 將此對象的原始值以字串形式傳回這兩個方法一般是交由JS去隱式調用,以滿足不同的運算情況。 在數值運算裡,會優先呼叫valueOf(),如a b#在字串運算裡,會優先呼叫toString(),如alert(c)以上是Javascript中的valueOf與toString的比較介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!