1

どのような条件で toString() および valueOf() メソッドが js エンジンによって呼び出されるのか、またはこれらのメソッドがいつ呼び出されるのかを知ることはできますか?また、どのメソッドが最初に呼び出されるのですか?

4

1 に答える 1

3

toString値を文字列にvalueOf変換し、数値に変換します。どちらが正確に呼び出されるかは、質問しているコンテキストによって異なります。

JavaScript が文字列を想定している場合、またはオブジェクトを文字列に変換しようとしている場合、toString が使用されます。数値が必要な場合は、valueOf を使用します。

このルールの例外は、値に toString と valueOf の両方がある場合、常に valueOf を呼び出すことです。

var x = {
    toString: function(){
        return "x";
    },

    valueOf: function(){
        return 2;
    }

}


alert("String :"+x); //2

alert("Number :"+(0+x)); //2

フィドル: http://jsfiddle.net/DsGKf/

そのため、文字列として機能させたいものに valueOf を定義する場合は注意してください。

于 2013-04-22T16:25:58.210 に答える