JavaScript에서는 객체를 기본 데이터 유형이나 문자열로 변환하는 데 toString() 메서드와 alueOf() 메서드를 사용합니다.
객체를 문자열로 변환하는 경우:
1. 객체의 toString() 메서드를 호출하여 해당 메서드가 반환된 문자열로 변환합니다. 다른 기본 데이터 유형은 자동으로 문자열로 변환됩니다.
2. 객체에 toString() 메서드가 없거나 메서드가 기본 데이터 유형을 반환하지 않는 경우 valueOf()를 호출합니다.
3. 마찬가지로 valueOf() 메서드가 존재하지 않거나 반환 값이 기본 데이터 유형이 아닌 경우 오류 메시지가 표시됩니다(IE에서는 오류를 보고하지 않을 수 있음).
Js 코드
//사용자 정의 함수(클래스)
function myObject(objectName)
{
this.objectName = objectName
}
var myObj = new myObject("MyObj");
//일반적인 상황에서는 먼저 toString() 메서드를 호출합니다.
myObject.prototype.toString = function(){return 123;}
myObject.prototype. valueOf = function(){return 321;};
alert(myObj) ; //결과는 123입니다.
//toString() 메서드가 잘못된 유형을 반환합니다. valueOf() 메서드를 호출하세요. 🎜>myObject.prototype.toString = function(){return new Date();};
myObject.prototype.valueOf = function(){return 321;}; //결과 is 321
//toString() 메서드가 존재하지 않습니다. valueOf() 메서드가 잘못된 유형을 반환합니다.
myObject.prototype.toString = undefine;
myObject.prototype.valueOf = function() {return new Date();};
alert(myObj); // 오류 메시지 표시(IE8에서는 오류를 보고하지 않고 [Object] 메시지 표시)
//사용자 정의 함수(클래스)
function myObject(objectName)
{
this.objectName = objectName;
}
var myObj = new myObject("MyObj");
//일반적으로 먼저 toString() 메소드
myObject.prototype.toString = function(){return 123;};
myObject .prototype.valueOf = function(){return 321;};
alert(myObj); // 결과는 123입니다
//toString() 메서드가 잘못된 유형을 반환합니다. valueOf() 메서드를 호출하세요.
myObject.prototype.toString = function(){return new Date();};
myObject.prototype.valueOf = function(){return 321;};
alert(myObj); //결과는 321입니다.
//toString() 메서드가 존재하지 않습니다. valueOf() 메서드가 잘못된 유형을 반환합니다.
myObject.prototype.toString = undefed;
myObject.prototype.valueOf = function(){return new Date();};
alert(myObj); //프롬프트 오류(no IE8에서는 오류가 보고되고 [Object])
라는 메시지가 표시됩니다. 마찬가지로 개체를 기본 데이터 유형 처리로 변환할 때 해당 작업이 수행되지만 toString( 대신 valueOf() 함수가 먼저 호출됩니다. ).
객체를 기본 데이터 유형으로 변환하는 경우:
1. 객체의 valueOf() 메서드를 호출하여 객체를 반환된 기본 데이터 유형으로 변환합니다.
2. 객체에 valueOf() 메서드가 없거나 메서드가 기본 데이터 유형을 반환하지 않는 경우 동일한 방식으로 toString() 메서드를 호출합니다.
3. ) 메소드가 존재하지 않거나 반환 값이 기본 데이터 유형이 아닌 경우 오류가 발생합니다.
Js 코드
//Custom 함수(클래스)
function; myObject(objectName)
{
this.objectName = objectName ;
}
var myObj = new myObject("MyObj");
//일반적으로 먼저 valueOf( ) 메소드
myObject.prototype.toString = function(){return 123;};
myObject.prototype.valueOf = function(){return 321;}
alert(myObj*2); 결과는 642입니다.
//valueOf() 메서드가 잘못된 유형을 반환합니다. toString() 메서드를 호출하세요.
myObject.prototype.toString = function(){return 123;}
myObject.prototype .valueOf = function(){return new Date();};
alert(myObj*2); //결과는 246입니다.
//toString() 메서드가 존재하지 않습니다. valueOf () 메서드가 잘못된 유형을 반환합니다.
myObject.prototype.toString = undefine;
myObject.prototype.valueOf = function(){return new Date();}
alert(myObj*2); /오류 프롬프트
//사용자 정의 함수(클래스)
function myObject(objectName)
{
this.objectName = objectName;
}
var myObj = new myObject( "MyObj");
//일반적으로 먼저 valueOf( )Method
myObject.prototype.toString = function(){return 123;};
myObject.prototype.valueOf = function( ){return 321;};
Alert(myObj*2); //결과는 642입니다
//valueOf() 메서드가 잘못된 유형을 반환합니다. toString() 메서드를 호출하세요
myObject.prototype.toString = function(){ return 123;
myObject.prototype.valueOf = function(){return new Date();};
alert(myObj*2); //결과는 246입니다
// toString() 메소드가 존재하지 않습니다. valueOf() 메소드가 잘못된 유형을 반환합니다.
myObject.prototype.toString = undefine;
myObject.prototype.valueOf = function(){return new Date();};
Alert(myObj* 2); // 오류 메시지 표시
객체 연산 설계 "+" 연산자를 사용하는 경우 "+"는 계산 연산과 문자열 연결 연산을 수행할 수 있으므로 특히 주의하세요.
1. "+"의 두 피연산자가 객체 유형인 경우 먼저 위 규칙에 따라 객체를 기본 데이터 유형으로 변환합니다.
2. 문자열 유형인 경우 다른 피연산자를 문자열로 변환합니다.
3. 그렇지 않으면 두 피연산자를 모두 숫자 유형(또는 NaN)으로 변환하고 더하기 연산을 수행합니다.
Js 코드
//사용자 정의 함수(클래스)
function myObject(objectName)
{
this.objectName =
}
var myObj = new myObject("MyObj");
//일반적인 상황에서는 먼저 valueOf() 메서드를 호출하고 숫자를 반환합니다.
myObject.prototype.toString = function(){return 123; };
myObject.prototype.valueOf = function(){return 321;};
alert(myObj + 1); //결과는 322(추가된 값)
alert(myObj + " 1" ; ;
myObject.prototype.valueOf = function(){return "321";};
alert(myObj + 1); //결과는 3211입니다(문자열 접합)
alert(myObj + "1 "); //결과는 3211입니다(문자열 접합)
//valueOf() 메서드가 잘못된 유형을 반환하고 toString() 메서드를 호출하여
myObject 문자열을 반환합니다. 프로토타입.toString = function( ){return "123";};
myObject.prototype.valueOf = function(){return new Date();}
alert(myObj + 1); is 1231(문자열 연결)
alert(myObj + "1"); //결과는 1231(문자열 접합)입니다.
//toString() 메서드가 존재하지 않으며 valueOf() 메소드가 잘못된 유형을 반환합니다.
myObject.prototype.valueOf = function(){return new Date();}; // Prompt 오류(IE8은 오류를 보고하지 않고 정의되지 않은 메시지를 표시함)
alert(myObj + "1"); //오류 메시지를 표시함(IE8은 오류를 보고하지 않고 정의되지 않은 메시지를 표시함)
//사용자 정의 함수( 클래스)
function myObject(objectName)
{
this.objectName = objectName;
}
var myObj = new myObject("MyObj");
www.2cto.com
//일반적으로 먼저 valueOf() 메서드를 호출하고 number를 반환합니다
myObject.prototype.toString = function(){return 123;};
myObject.prototype.valueOf = function(){return 321; };
alert(myObj + 1); /결과는 322(숫자 추가)
alert(myObj + "1"); //결과는 3211(문자열 연결)
/ /일반적으로 먼저 valueOf() 메서드를 호출하고 String
myObject.prototype.toString = function(){return 123;};
myObject.prototype.valueOf = function(){return "321";}을 반환합니다. ;
alert(myObj + 1); //결과는 3211(문자열 접합)
alert(myObj + "1"); //결과는 3211(문자열 접합)
//valueOf() 메서드가 잘못된 유형을 반환하고 toString() 메서드를 호출한 후
myObject.prototype.toString = function(){return "123";};
myObject.prototype 문자열을 반환합니다. valueOf = function (){return new Date();};
alert(myObj + 1); //결과는 1231입니다(문자열 연결)
alert(myObj + "1"); 1231(문자 문자열 연결)
//toString() 메서드가 존재하지 않으며 valueOf() 메서드가 잘못된 유형을 반환합니다.
myObject.prototype.toString = undefine;
myObject.prototype .valueOf = function(){ return new Date();};
alert(myObj + 1); // 프롬프트 오류(IE8은 오류를 보고하지 않고 정의되지 않은 프롬프트를 표시함)
alert(myObj + "1 "); 오류를 보고하고 정의되지 않은 메시지를 표시합니다)