この記事では Javascript の valueOf と toString についての比較紹介 (コード例) を紹介します。必要な方は参考にしていただければ幸いです。
+{ a: 1, toString: function() { return '10' }, valueOf: function() { return '100' } }
上記はオブジェクト データ変換の問題につながります:
すべてのオブジェクトは 2 つの変換メソッドを継承します:
toString(): その関数は A を返すことです。このオブジェクトを反映する文字列
valueOf(): その機能は、対応する元の値
toString( )## を返すことです。
#toString() 関数の機能は、オブジェクトの文字列表現を返すことです。JavaScript のオブジェクトのデフォルトの toString() メソッドは、文字列「[object Object]」を返します。クラスを定義するときに、新しい toString() メソッドを実装して、より読みやすい結果を返すことができます。
JavaScript は、
配列オブジェクト、関数オブジェクト、正規表現オブジェクト、日付日付オブジェクトに対して、より読みやすい 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() 関数は、オブジェクト自体を返します。toString() と同様に、必要な結果を返すクラスを定義するときに、新しい valueOf() メソッドを実装できます。
JavaScript は、Date オブジェクトに対して、より読みやすい valueOf() メソッドを定義します。
1970 の間の日付であるタイムスタンプ値を返します。 1月1日0時からの時差(ミリ秒)。
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
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
test2 = test とすると、予想どおり、test2 の valueOf と test2 の toString が呼び出されます。
例 3
alert('' + test) // 10 valueOf
例 4
に変更できます。
alert(String(test)) // 10 toString
alert(Number(test)) // 10 valueOf
alert(test == '10') // true valueOf
を呼び出します。例 7
alert(test === '10') // false
===
概要
文字列型を強制変換する場合は toString メソッドが最初に呼び出され、文字列型を強制変換する場合は最初に valueOf メソッドが呼び出されます。
演算子の場合、valueOf は toString よりも優先されます。 valueof と tostring の違いを簡単に説明します。 valueOf(): オブジェクト タイプに最適な元の値を返します。 toString(): オブジェクトを変換します。 to 元の値は文字列の形式で返されます。 これら 2 つのメソッドは、通常、さまざまな操作状況に合わせて JS によって暗黙的に呼び出されます。 数値演算では、b などの valueOf() が最初に呼び出されます。文字列演算では、alert(c) などの toString() が最初に呼び出されます。以上がJavascript における valueOf と toString の比較入門 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。