ajaxian.com - WTFJS, firejune.com - WTFJS(젠장할 자바스크립트), ajaxian.kr - WTFJS: “string” instanceof String 에 언급된
WTFJS(왓 더 삐-_- JS)의 아래 예문을 보고 이것저것 테스트를 해보니 또 재미있는게 있어서 대충 정리를 해봤습니다.
"string" instanceof String; // false.
이걸 좀 바꿔보면 아래처럼도 쓸 수 있습니다.
String('string') instanceof String // false
typeof String('string') // string
-> new를 안붙였기 때문에 역시나 false가 나옴. 일반적인 함수 실행하고 string을 리턴받는 형식으로 보임.그런데,
Object('string') instanceof String // true
이렇게 new를 안붙이고 Object()를 쓸때는 또 true 가 나옵니다-_- new를 붙여도 마찬가지로 true.
new String('string') instanceof String // true
typeof new String('string') // object
-> 요게 당연히? 맞는 케이스이고, String은 Object에서 파생된 클래스라서 typeof에 object가 나오는 것까지는 좋은데,
var a = new Object('blah')
a instanceof String // true
-> 이렇게 거꾸로 됐음에도 true가 나옵니다. 클래스 상속 개념과는 전혀 안맞음-_-String뿐만 아니라 Number, Boolean, Array, Function, RegExp 등의 'Global Objects'의 'Basic Data Type' 에도 동일하게 적용이 돼서
인자의 타입과 맞는 object가 생성이 돼버립니다. (단, Date는 제외)
참고 : Javascript Instanceof, Standard global objects (By type)
하여간, 자바스크립트라는 놈은 뭔가 독특해서 더 재미있는듯...ㅋ...
Tag WTFJS
