Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 instanceof()와 Array.isArray() 메서드의 차이점은 무엇입니까?


Array.isArray() 방법은 보편적이며 instanceof 연산자는 보편적이지 않으며 새로운 환경에서는 작동하지 않습니다.

구문-1

Array.isArray(array);

구문-2

array instance of Array;

다음 예에서는 새 환경이 생성되지 않은 경우 Array.isArrar()인스턴스 동일한 출력을 생성했습니다.

예시

<html>
<body>
<script>
   var a = [1,2,3,4,5];
   document.write(Array.isArray(a));
   document.write("</br>");
   document.write((a instanceof Array));
   document.write("</br>");
   var b = {}
   document.write(Array.isArray(b));
   document.write("</br>");
   document.write((b instanceof Array));
</script>
</body>
</html>

출력

true
true
false
false

이제 새로운 환경을 만들어 보겠습니다. 또는 instanceof 여부를 확인하기 위해 새 프레임 교환원은 그곳에서 일을 합니다.

다음 예에서는 'iframe을 사용하여 새 프레임을 만듭니다. '(객체와 같은 배열을 생성하는 프레임 속성). 나중에 객체와 같은 배열이 새 프레임에 만들어지고 두 함수를 통해 전달됩니다. 인스턴스 이후 프레임 배열이 실제 배열이 아니고 거짓 을 반환해야 하므로 보편적이지 않습니다. 출력으로 반면 Array.isArray() 반환 출력에 표시된 대로.

예시

<html>
<body>
<script>
   var iframeE = document.createElement('iframe');
   iframeE.style.display = "none";
   document.body.appendChild(iframeE);
   iframeArray = window.frames[window.frames.length - 1].Array;
   var a = new Array(1,2,3,"hi",4, "hello");
   var b = new iframeArray(1,2,3,4);
   document.write(Array.isArray(a));
   document.write("</br>");
   document.write(a instanceof Array);
   document.write("</br>");
   document.write(Array.isArray(b));
   document.write("</br>");
   document.write(b instanceof Array);
</script>
</body>
</html>

출력

true
true
true
false