이 글의 내용은 js에서 객체를 문자열, 숫자, 불리언 값으로 변환하는 방법에 대한 소개입니다. 필요한 친구들이 참고하면 좋겠습니다. 당신에게 도움이 됩니다.
규칙:
1. 객체에 toString 메서드가 있으면 해당 메서드를 호출하고 반환합니다. 해당 결과; (모든 객체에 toString 메소드가 있기 때문에 일반적으로 코드가 실행됩니다.)
2 객체에 valueOf 메소드가 있으면 해당 메소드를 호출하고 해당 결과를 반환합니다. #🎜 🎜#
3, 그렇지 않으면 예외가 발생합니다. 일반적으로 모든 객체에는 toString 메서드가 있고 내장 객체에는 자체 toString 메서드 구현이 있습니다. alert({key: 'value'}) // [object Object ]alert( [1,2] ) // "1,2"
alert( new Date() ) // "2018년 9월 15일 토요일 15:58:01 GMT+0800(중국 표준) Time )"
사실,parseInt(),alert(),document.write()등의 함수 호출에서 매개 변수의 유형 변환은 "수동"으로 간주되어야 하는 함수의 구현입니다. 데이터가 아닌 객체에 대해 자동으로 toString을 호출하는 대신 toString을 호출하는 데 우선 순위를 둡니다.
var obj = { age:23, toString:function(){ return this.age; } } obj.toString();//23
함수의 매개변수는 Math.sin(obj) / isNaN(obj)과 같은 숫자여야 하며 산술 연산자: +obj는
을 사용합니다. obj = = 'John'
PS: 다음 두 비교에서는 유형 변환이 발생하지 않습니다.
a) 엄격한 비교에서 (===) , 유형 변환이 발생하지 않습니다. 변환,
b) 비엄격 비교에서 매개변수가 모두 객체인 경우 일반적으로 두 객체가 동일한 객체를 참조하는 경우 유형 변환이 발생하지 않습니다.
#🎜 🎜# 숫자로 변환하는 규칙: 1. 객체에 valueOf 메서드가 있으면 해당 메서드를 호출하고 해당 결과를 반환합니다. 🎜🎜# 2. valueOf를 호출할 때 반환 여전히 숫자가 아닌 경우 객체의 toString 메서드가 호출되고 해당 결과가 반환됩니다. 3. 그렇지 않으면 예외가 발생합니다. 던져진다. 객체의 valueOf 메서드는 문자열이 아닌 객체 자체를 반환합니다(예: 배열 및 함수, 해당 valueOf 메서드는 Object.prototype에서 상속되며 기본 동작은 객체 자체를 반환하는 것입니다) , 그래서 객체 유형 참여에 toString을 사용합니다. 산술 연산 및 "==" 연산은 비교 연산(>, <, >=, <=)과 동일하지 않습니다. ValueOf가 먼저 호출됩니다. , valueOf가 스칼라(숫자, 문자열, 부울)를 반환할 수 없고 정의되지 않은 경우, 은 계속해서 객체 유형 데이터를 반환하면 오류가 보고됩니다.날짜 유형 예외: + 및 == 연산에서는 toString이 우선순위를 가지며 이는 이 데이터 유형에 대한 사양의 특별 처리여야 합니다.
Added: valueOf() 호출 결과:
결과 반환 | #🎜 🎜 ####undefined#### ## ## ########### ## ## ## ## ## ## 🎜🎜# Null |
Number # 🎜🎜# | 내부 초기값이 전달된 매개변수 값인 Number 객체 생성|
#🎜 🎜#String# 🎜🎜# | 내부 초기값이 전달된 매개변수 값인 문자열 개체 만들기 |
내부 초기값이 전달된 매개변수 값인 부울 객체 생성 | #🎜 🎜# |
객체 자체 | #🎜🎜 #
可以重写对象的valueOf()方法(百度一道面试题,定义一个对象,使obj == '1' ,结果为true): var obj = { valueOf: function(){ return 1; } }; console.log(obj == '1');//true 로그인 후 복사 三、对象转化成布尔值:对象在JS中总是返回true 根据上述,对象在相等性判断中如何转变? 在布尔上下文中, a是true , b是false,a == b,这是可能的 。 [] == ![] //true 内部的转化步骤: 1、右边是![],将会被转换成一个布尔值,[]为true,取非为false,此时表达式变成: []==false; 2、按照规则,右边是布尔值,将false转换成0,左边是数组,数组也将进行数字转换,先调用valueOf(),不能转化成原始值,再用toString(),转换为0 0 == 0 3、结果为true 补充 == 和!=判断规则(注意: ===!== 和 对象==对象 这三种情况不会进行类型转换): 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值----false转化为0,true转化为1; 如果有一个数是字符串,另一个操作数是数值,将字符串转化成数值; 如果一个操作数是对象,另一个操作数不是对象,将对象转化为基本操作类型(先valueOf()再toString(),均不能得到基本类型的值则会报错),再比较。 所以,对象在相等性判断中: 若两边都是对象,不会进行类型转换,为同一个引用才会返回true 若只有一边为对象,则会先调用对象的valueOf()方法,不能返回基本类型,再调用对象的toString()方法,还是不能就会报错,否则用转化后的基本类型值继续进行判断 举例,感受下~:[]==[]//false []==false//true !![]//true []==![]//true 로그인 후 복사 总结:在JavaScript中,对象有三个转换,这取决于具体情况: 字符串输出,使用toString 。 数字:数学函数,操作符,使用valueOf 后使用 toString 。 布尔值:转化为true。 相关推荐: 위 내용은 js에서 객체를 문자열, 숫자, 불리언 값으로 변환하는 방법 소개(예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
최신 이슈
배열, 구성 가능한 API에 객체 푸시
프로젝트가 있습니다. "크기"(대형, 소형) 및 수량(2/4/6)의 두 가지 선택 옵션이 있습니다. 각 옵션을 선택하면 선택 사항이 제목에 표시...
에서 2024-04-05 14:41:47
0
1
1526
관련 주제
더>
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
|