찾다

 >  Q&A  >  본문

자바스크립트 - 인스턴스 연산자

https://www.ibm.com/developer...

이 기사를 바탕으로

instaceof는 다음 코드로 시뮬레이션할 수 있습니다

으아악

하지만
var a=1;
instance_of(a,Object)는 true
a instanceof Object가 false를 반환하는데, 왜 그럴까요?

黄舟黄舟2751일 전720

모든 응답(3)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:28:43

    소유자님, instance_of 是代替不了 instanceof

    을 사용해 보세요

    먼저 샘플 a가 Number 유형인지 확인하세요

    그러나 실행 결과는 다음과 같습니다
    instance_of(a, Object) // true
    instance_of(a, Number) // true

    instance_of 메소드 수정:

    으아악

    다시 실험해 보세요:

    으아악

    회신하다
    0
  • 世界只因有你

    世界只因有你2017-05-19 10:28:43

    이 글에서 사용된 표준은 ES3입니다

    ES6의 instanceof标准更长一点, 规定了当type(L)不是Object时L instanceof R는 false를 반환해야 합니다. 이 모의 코드는 적용되지 않습니다

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:28:43

    한 부분은 시뮬레이션 코드에 있는 프로토타입 체인의 콘텐츠입니다.

    으아아아

    L = L._proto_는 L이 프로토타입 체인까지 프로토타입을 검색한다는 의미이며, 이 예에서는 마지막으로 Number ==> Object 객체에서 객체를 래핑하고 R은 Object, 합동 연산자를 전달한 후 true를 반환하므로 instance_of(a,Object)는 true입니다. L = L._proto_ 代表着L会沿着原型链一直向上查找原型,而在本例中,最后是从Number包装对象==>Object对象,而R就是Object,再经过全等运算符之后就返回true,所以instance_of(a,Object)为true。

    a instanceof Object

    instanceofObject는 프로토타입 체인 검색을 거치지 않고 Number 객체의 인스턴스와 Object 사이에서 직접 판단하기 때문에 false를 반환하므로 결과는 false입니다🎜

    회신하다
    0
  • 취소회신하다