https://www.ibm.com/developer...
이 기사를 바탕으로
instaceof는 다음 코드로 시뮬레이션할 수 있습니다
으아악하지만
var a=1;
instance_of(a,Object)는 true
a instanceof Object가 false를 반환하는데, 왜 그럴까요?
伊谢尔伦2017-05-19 10:28:43
소유자님, instance_of
是代替不了 instanceof
의
먼저 샘플 a가 Number 유형인지 확인하세요
그러나 실행 결과는 다음과 같습니다
instance_of(a, Object) // true
instance_of(a, Number) // true
instance_of 메소드 수정:
으아악다시 실험해 보세요:
으아악世界只因有你2017-05-19 10:28:43
이 글에서 사용된 표준은 ES3입니다
ES6의 instanceof
标准更长一点, 规定了当type(L)
不是Object时L instanceof R
는 false를 반환해야 합니다. 이 모의 코드는 적용되지 않습니다
曾经蜡笔没有小新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입니다🎜