ホームページ ウェブフロントエンド jsチュートリアル Javascript_javascript スキルにおける valueOf と toString の違いの簡単な分析

Javascript_javascript スキルにおける valueOf と toString の違いの簡単な分析

May 16, 2016 pm 05:40 PM
tostring valueof

はじめに

基本的に、null を除くすべての JS データ型にはこれら 2 つのメソッドがあります。どちらも JavaScript 値の計算と表示の問題を解決し、書き換えることで呼び出しの最適化が向上します。

テスト分析

まず例を見てみましょう:

コードをコピー コードは次のとおりです:

var aaa = {
i: 10,
valueOf: function() { return this.i 30; },
toString: function() { return this.valueOf() }
}

alert(aaa > 20); // true
alert(aaa) // 40
alert(aaa) // 50


それは、valueOf メソッドまたは toString メソッドを密かに呼び出すためです。
しかし、どのような状況でどのメソッドが呼び出されるのかを、別のメソッドでテストできるのでしょうか?
console.logを使用するので、firebugをインストールしたFFで実験してみてください!
コードをコピー コードは次のとおりです:

var bbb = {
i: 10,
toString: function() {
console.log('toString');
return this.i;
},
valueOf: function() {
コンソール。 log(' valueOf');
return this.i;
}
}

alert(bbb); // 10 toString
alert(bbb); // 10 valueOf
alert(bbb); / 10 toString
alert(Number(bbb)) // 10 valueOf
alert(bbb == '10') // true valueOf
alert(bbb === '10'); / false

この結果は、文字列に変換するときに toString メソッドが呼び出され、数値に変換するときに valueOf メソッドが呼び出されるような印象を与えますが、そのうち 2 つは非常に矛盾しています。 1 つは、alert('' bbb) です。文字列の連結では toString メソッドを呼び出す必要があります。もう 1 つは、=== 演算子が暗黙的な変換を実行しないため、呼び出されないということです。真実を知るには、より厳密な実験が必要です。

コードをコピー コードは次のとおりです:
var aa = {
i: 10,
toString: function() {
console.log('toString');
return this.i;
}
}
alert(aa);// 10 toString
alert( aa); // 10 toString
alert('' aa); // 10 toString
alert(String(aa)); )); // 10 toString
alert(aa == '10'); // true toString


もう一度 valueOf を見てください。


var bb = {
i: 10、
valueOf: function() {
console.log('valueOf')
return this.i; }
}

alert(bb);// [オブジェクト オブジェクト]
alert( bb); // 10 valueOf alert('' bb); // 10 valueOf

alert(String(bb)) ; // [object Object]
alert(Number(bb)); // 10 valueOf
alert(bb == '10'); // true valueOf


何かが見つかりました違う? !上記の toString ほど統一されておらず、規則的でもありません。
その[オブジェクト Object] については、Object から継承されていると思います。それを削除して見てみましょう。




コードをコピーします コードは次のとおりです。Object.prototype.toString = null; 🎜>var cc = {
i: 10,
valueOf: function() {
console.log('valueOf');
return this.i;


alert(cc); // 10 valueOf
alert('' cc); // 10 valueOf
alert(cc); ); // 10 valueOf
alert(Number(cc)); // 10 valueOf alert(cc == '10'); // true valueOf


概要: valueOfこれは操作に偏っており、toString は表示に偏っています。
1. オブジェクト (alert(a) など) を変換する場合、toString メソッドが最初に呼び出されます。どちらのメソッドもオーバーライドされていない場合は、toString の出力が呼び出されます。オブジェクトは です。
2.文字列型に強制変換する場合はtoStringメソッドが、数値型に強制変換する場合はvalueOfメソッドが最初に呼び出されます。
3. 演算演算子がある場合、valueOf は toString よりも優先されます。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java の String.valueOf() 関数を使用して基本データ型を文字列に変換する Java の String.valueOf() 関数を使用して基本データ型を文字列に変換する Jul 24, 2023 pm 07:55 PM

Java の String.valueOf() 関数を使用して基本データ型を文字列に変換する Java 開発で基本データ型を文字列に変換する必要がある場合、一般的な方法は String クラスの valueOf() 関数を使用することです。この関数は、基本データ型のパラメータを受け入れ、対応する文字列表現を返すことができます。この記事では、基本的なデータ型変換に String.valueOf() 関数を使用する方法を検討し、いくつかのコード例を提供します。

JavaのBoolean.valueOf()関数を使用して文字列をブール値に変換します。 JavaのBoolean.valueOf()関数を使用して文字列をブール値に変換します。 Jul 24, 2023 pm 05:15 PM

Java の Boolean.valueOf() 関数を使用して文字列をブール値に変換する Java プログラミングでは、文字列をブール値に変換する必要がある状況によく遭遇します。 Java では、Boolean.valueOf() 関数を使用して、この要件を達成する便利な方法を提供しています。この関数は、文字列で表されるブール値を対応するブール型に変換できます。 Boolean.valueOf() の使用法を詳しく見てみましょう。文字列が与えられると、

Java での valueOf メソッドの使用法と例 Java での valueOf メソッドの使用法と例 Apr 24, 2023 pm 02:13 PM

1. コンセプトは、文字列を通じて単一の列挙オブジェクトを取得することであり、3 つの構文形式があります。 2. パラメータ i、Integer オブジェクトの整数。 s、Integer オブジェクトの文字列。文字列 s を解析するときに使用される基数である radix は、使用される基数を指定するために使用されます。 3. 戻り値は、文字列パラメータで表される整数オブジェクト例外です。文字列を解析できない場合は、NumberFormatException 例外がスローされます。 4. インスタンス publicenumSignal{//列挙型を定義します。 GREEN、YELLOW、RED; publicstaticvoidmain(String[ ]args ){Signalgreen=Sig

StringBuffer クラスの toString() メソッドを使用して StringBuffer を文字列に変換します StringBuffer クラスの toString() メソッドを使用して StringBuffer を文字列に変換します Jul 25, 2023 pm 06:45 PM

StringBuffer クラスの toString() メソッドを使用して、StringBuffer を文字列に変換します。Java では、StringBuffer クラスは、変更可能な文字列を処理するために使用されるクラスです。このクラスには、文字列を変更および操作するための便利なメソッドが多数用意されています。 StringBuffer オブジェクトを文字列に変換する必要がある場合、toString() メソッドを使用してこれを実現できます。 StringBuffer クラスの toString() メソッドは、

JavaのString.valueOf()関数を使用して文字配列を文字列に変換します。 JavaのString.valueOf()関数を使用して文字配列を文字列に変換します。 Jul 27, 2023 am 11:22 AM

Java の String.valueOf() 関数を使用して文字配列を文字列に変換する Java プログラミングでは、多くの場合、文字配列を文字列に変換する必要があります。幸いなことに、Java には、この機能を実現する便利なメソッド String.valueOf() が用意されています。この記事では、String.valueOf() 関数を使用して文字配列を文字列に変換する方法を説明し、対応するコード例を示します。 String.valueOf() 関数は

JavaのString.valueOf()関数を使用して他の型を文字列に変換します。 JavaのString.valueOf()関数を使用して他の型を文字列に変換します。 Jul 24, 2023 pm 10:31 PM

Java の String.valueOf() 関数を使用して、他の型を文字列に変換します。Java 開発では、他のデータ型を文字列に変換する必要がよく発生します。このニーズを満たすために、Java は型変換を実装する String.valueOf() 関数を提供します。この記事では、String.valueOf() 関数を使用して他の型を文字列に変換する方法を説明し、コード例を示します。基本データ型を文字列に変換する まず、基本データ型を文字列に変換する方法を見てみましょう。

Java で toString() メソッドをカスタマイズする方法 Java で toString() メソッドをカスタマイズする方法 Apr 27, 2023 pm 02:25 PM

tostring 関数の実装をシミュレートする publicstaticStringmyToString(int[]array){Stringstr="[";for(inti=0;i)

JavaでtoString()メソッドを使用して配列を出力するにはどうすればよいですか? JavaでtoString()メソッドを使用して配列を出力するにはどうすればよいですか? May 09, 2023 am 10:01 AM

1. 説明 関数 1 は文字列に変換できます。 関数 2 は値をさまざまな基数の文字列 (8 進数、10 進数など) に変換できます。 2. 構文 StringtoString() staticStringtoString(inti) 3. パラメータ i - 変換する整数変換されます。 4. 戻り値 toString(): 整数値を表す String オブジェクトを返します。 toString(inti): 指定された int を表す String オブジェクトを返します。 5. 例 importjava.util.Arrays; publicclassArrayPrint{publicstaticvoidmain(Str

See all articles