2013-04-22 3 views
1

Могу ли я узнать, в каком случае методы toString() и valueOf() запускаются при помощи js-механизма или когда вызываются эти методы? Также этот метод называется fist?Область применения метода toString() и valueOf()

+0

все зависит от контекста. Можете ли вы рассказать нам о том, почему вы хотите знать? –

ответ

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 на вещи, которые вы хотите иметь акт в виде строк.

+0

может привести пример –

+0

строка + 2 должна привести к ошибке –

+0

будет преобразована в строку –

Смежные вопросы