모든 JS 데이터 유형에는 NULL을 제외한 가치와 토스트 링의 두 가지 방법이 있다고 말할 수 있습니다. 둘 다 JavaScript 값 작동 및 디스플레이의 문제를 해결합니다. 프로그램에서 매우 널리 사용됩니다. 하나씩 소개하겠습니다.
JavaScript의 valueof () 메소드
valueof () 메소드는 부울 객체의 원래 값을 반환합니다.
사용법 BooleanObject.valueof ()는 booleanObject의 값으로 원래 부울 값을 반환합니다. 메소드를 호출하는 물체가 부울이 아닌 경우, 예외 유형 에러가 던져집니다.
<script type = "text/javaScript"> var boo = new boolean (false); document.write (boo.valueof ()); </script>
위의 스크립트는 False를 출력합니다.
JavaScript의 toString () 메소드
toString () 메소드는 논리적 값을 문자열로 변환하고 결과를 반환합니다.
사용법 BOOLEANOBJECT.TOSTRING (), 리턴 값은 원래 부울 값 또는 부울 오브젝트 객체의 값에 따라 문자열 "true"또는 "false"를 반환합니다. 메소드를 호출하는 물체가 부울이 아닌 경우, 예외 유형 에러가 던져집니다.
이 방법은 부울 객체가 문자열 환경에서 사용될 때 자동으로 호출됩니다.
다음 스크립트는 부울 객체를 만들어 문자열로 변환합니다.
<script type = "text/javaScript"> var boo = new boolean (true); document.write (boo.toString ()); </script>
스크립트 출력 : true.
예를 살펴 보겠습니다.
var aaa = {i : 10, valueof : function () {return this.i+30; }, toString : function () {return this.valueof ()+10; }} alert (aaa> 20); // truealert (+aaa); // 40alert (AAA); // 50이 결과는 비밀리에 가치를 호출하거나 토스스트링 방법을 호출하기 때문입니다. 그러나 어떤 상황에서 어떤 방법이 호출되는지를 구별하는 방법은 무엇입니까? 다른 방법을 통해 테스트 할 수 있습니다. Console.log가 사용되므로 Firebug가 설치된 FF에서 실험하십시오!
var bbb = {i : 10, tostring : function () {console.log ( 'tostring'); retract this.i;}, valueof : function () {console.log ( 'valueof'); return this.i;}} alert (bbb); // 10 tostringalert (+bbb); // 10 ValueOfalert ( ''+bbb); // 10 ValueOfalert (String (bbb)); // 10 TOSTRINGALERT (번호 (bbb)); // 10 ValueOfalert (bbb == '10'); // true valueofalert (bbb === '10'); // 거짓언뜻보기에, 결과는 대략적으로 문자열로 변환되면 메소드의 가치가 호출되지만 그 중 2 개는 매우 불협화음이라는 느낌입니다. 하나는 Alert ( ''+BBB)이고 문자열 연결을 Tostring 메소드라고해야합니다 ... 다른 하나는 === 운영자가 암시 적 변환을 수행하지 않으므로 호출되지 않았다는 것을 일시적으로 이해할 수 있습니다. 진실을 추구하기 위해서는보다 엄격한 실험이 필요합니다.
var aa = {i : 10, tostring : function () {console.log ( 'tostring'); return this.i;}} alert (aa); // 10 tostringalert (+aa); // 10 TOSTRINGALERT ( ''+aa); // 10 TOSTRINGALERT (String (aa)); // 10 TOSTRINGALERT (번호 (aa)); // 10 TOSTRINGALERT (aa == '10'); // true tostringalert다시 가치를보십시오.
var bb = {i : 10, valueof : function () {console.log ( 'valueof'); return this.i;}} alert (bb); // [Object Object] Alert (+bb); // 10 ValueOfalert ( ''+bb); // 10 ValueOfalert (문자열 (bb)); // [Object Object] Alert (번호 (bb)); // 10 ValueOfalert (bb == '10'); // true valueof조금 다르게 찾았 어? ! 위의 토스트 링만큼 균일하고 규칙적이지 않습니다. 그 [Object Object]의 경우 아마도 물체에서 물려 받았을 것입니다. 제거하고 살펴 보겠습니다.
object.prototype.tostring = null; var cc = {i : 10, valueof : function () {console.log ( 'valueof'); return this.i;}} alert (cc); // 10 valueofalert (+cc); // 10 ValueOfalert ( ''+cc); // 10 ValueOfalert (문자열 (cc)); // 10 ValueOfalert (번호 (cc)); // 10 ValueOfalert (cc == '10'); // true valueofTostring 만 다시 작성되면 객체 변환은 변환 할 때 가치의 존재를 무시합니다. 그러나 메소드의 값만 다시 작성되면 문자열로 변환 할 때 메소드의 값이 우선 순위가 부여됩니다. Tostring에게 전화 할 수 없다면, 가치가 전투에 나가게 할 수 있습니다. 이상한 문자열 스 플라이 싱 문제의 경우 연산자 때문일 수 있습니다. ECMA262-5를 열면 GetValue 작동이 있음을 알게됩니다. 그렇다면 대답은 공개되어야합니다. 다시 쓰기는 전화의 최적화를 증가시킬 것이며, 운영자의 경우 가치의 우선 순위는 이미 Tostring보다 높습니다.
위는 편집자가 소개 한 JavaScript의 가치 및 Tostring 방법에 대한 완전한 설명입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!