이 글은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!