>웹 프론트엔드 >JS 튜토리얼 >JavaScript 유형 판단 방법 소개(코드 예)

JavaScript 유형 판단 방법 소개(코드 예)

不言
不言앞으로
2019-03-18 11:02:002245검색

이 글은 JavaScript 유형 판단 방법(코드 예제)에 대한 소개를 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

JS 데이터 유형 판단

때로는 데이터 유형을 판단하고 다양하고 복잡한 논리적 판단을 처리해야 할 때가 있습니다. 가장 일반적으로 사용되는 것부터 시작하겠습니다.

1.typeof

typeof 연산자는 문자열을 반환하고 변수의 유형을 나타냅니다.

typeof oper / typeof (operand)

var testString = 'adus',
    testArray = [],
    testBoolean = true,
    testNumber = 0,
    testObject = {},
    testNull = null,
    testUndefined = undefined
    
console.log(typeof testString);//string
console.log(typeof testArray);//object
console.log(typeof testBoolean);//boolean
console.log(typeof testNumber);//number
console.log(typeof testObjec);//object
console.log(typeof testNull);//object
console.log(typeof testUndefined);//undefined

물론 위의 기본 유형뿐만 아니라 다음과 같은 유형도 있습니다.

Symbol (ECMAScript 6의 새로운 기능) "symbol"

Host 객체(JS 환경에서 제공) ) 구현-종속

함수 객체([[Call]]은 ECMA-262 절에서 구현됨) "function"

eh? 뭔가 잘못되었습니다. 배열, null 등이 모두 객체인 이유는 무엇입니까? ? ? 실제로 객체 인스턴스를 기반으로 한 확장인

Function 또는 Array 인스턴스를 보려면 아래를 살펴보세요. 좀 더 독특한 속성을 갖고 있을 뿐입니다.

JavaScript의 원래 구현에서 JavaScript의 값은 유형과 실제 데이터 값을 나타내는 태그로 표시되었습니다. 객체의 유형 태그가 0입니다.

null은 널 포인터를 나타내기 때문입니다(대부분의 플랫폼에서 값은 0x00입니다).

따라서 null의 유형 레이블도 0이 되고, typeof null은 "object"를 잘못 반환합니다. (참조)

2.instanceof

instanceof 연산자는 생성자의 프로토타입 속성이 객체의 프로토타입 체인 어디에나 나타나는지 테스트하는 데 사용됩니다. 이는 변수가 객체의 인스턴스인지 여부를 의미합니다.

object instanceof constructor

object 감지할 객체/생성자 생성자

function fnc(){}
var newFnc = new fnc();
console.log(newFnc.__proto__ == fnc.prototype);//true
console.log( newFnc instanceof fnc ) //true


/*String对象和Date对象都属于Object类型和一些特殊情况*/

var simpleStr = "This is a simple string"; 
var myString  = new String();
var newStr    = new String("String created with constructor");
var myDate    = new Date();
var myObj     = {};
var myNonObj  = Object.create(null);

simpleStr instanceof String; // 返回 false, 检查原型链会找到 undefined
myString  instanceof String; // 返回 true
newStr    instanceof String; // 返回 true
myString  instanceof Object; // 返回 true

myObj instanceof Object;    // 返回 true, 尽管原型没有定义
({})  instanceof Object;    // 返回 true, 同上
myNonObj instanceof Object; // 返回 false, 一种创建对象的方法,这种方法创建的对象不是Object的一个实例

myString instanceof Date; //返回 false

myDate instanceof Date;     // 返回 true
myDate instanceof Object;   // 返回 true
myDate instanceof String;   // 返回 false

3.Object.prototype.toString()

모든 객체는 객체가 텍스트 값으로 표현될 때 toString() 메소드를 갖습니다. 또는 개체가 예상되는 문자열 형식으로 참조되는 경우입니다. 기본적으로 toString() 메서드는 모든 Object 객체에 상속됩니다. 사용자 정의 객체에서 이 메서드가 재정의되지 않으면 toString()은 "[객체 유형]"을 반환합니다. 여기서 type은 객체의 유형입니다.

Function.prototype.call( thisArg ) / Function.prototype.apply( thisArg )

확인할 개체를 첫 번째 매개변수인 thisArg로 전달합니다.

var toString = Object.prototype.toString;

toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]

//Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]

적절한 시나리오에서 적절한 방법을 사용하면 걱정을 덜고 코드의 단순성과 견고성을 보장할 수 있습니다.


위 내용은 JavaScript 유형 판단 방법 소개(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제