> 웹 프론트엔드 > JS 튜토리얼 > js에서 객체를 문자열, 숫자, 불리언 값으로 변환하는 방법 소개(예)

js에서 객체를 문자열, 숫자, 불리언 값으로 변환하는 방법 소개(예)

不言
풀어 주다: 2018-09-15 17:30:28
원래의
2237명이 탐색했습니다.

이 글의 내용은 js에서 객체를 문자열, 숫자, 불리언 값으로 변환하는 방법에 대한 소개입니다. 필요한 친구들이 참고하면 좋겠습니다. 당신에게 도움이 됩니다.

1. 객체를 문자열로 변환합니다.

규칙:

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 )"

alert() 및 document.write()와 같은 인터페이스 출력에서는 toString이 먼저 호출됩니다. 스칼라 또는 정의되지 않음 또는 null을 얻지 못한 경우 valueOf가 다시 시도됩니다. 개체가 여전히 반환되면 오류가 보고됩니다.

사실,parseInt(),alert(),document.write()등의 함수 호출에서 매개 변수의 유형 변환은 "수동"으로 간주되어야 하는 함수의 구현입니다. 데이터가 아닌 객체에 대해 자동으로 toString을 호출하는 대신 toString을 호출하는 데 우선 순위를 둡니다.

사용자 정의할 수 있습니다 toString()

var obj = {
    age:23,
    toString:function(){        
    return this.age;
    }
}
obj.toString();//23
로그인 후 복사

2. 객체를 숫자로 변환

숫자로 변환해야 하는 두 가지 주요 상황은 다음과 같습니다. #🎜🎜 #

함수의 매개변수는 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() 호출 결과:


매개변수 유형 TypeError 예외 발생내부 초기값이 전달된 매개변수 값인 Number 객체 생성#🎜🎜 ##🎜 🎜#Boolean내부 초기값이 전달된 매개변수 값인 부울 객체 생성 #🎜 🎜#객체
결과 반환 #🎜 🎜 ####undefined#### ## ## ########### ## ## ## ## ## ## 🎜🎜# Null
Number # 🎜🎜#
#🎜 🎜#String# 🎜🎜#내부 초기값이 전달된 매개변수 값인 문자열 개체 만들기
객체 자체#🎜🎜 #


可以重写对象的valueOf()方法(百度一道面试题,定义一个对象,使obj == '1' ,结果为true):

var obj = {
    valueOf: function(){       
    return 1;
    }
};
console.log(obj == &#39;1&#39;);//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中json字符串和json对象互相转化的方法实现

js中json对象和字符串相互转化操作实例

위 내용은 js에서 객체를 문자열, 숫자, 불리언 값으로 변환하는 방법 소개(예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿