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)하여간, 자바스크립트라는 놈은 뭔가 독특해서 더 재미있는듯...ㅋ...
빈치 2010/04/06 21:44 # M/D Reply
하요!!! 위엣말은 도대체 무슨말??..
잘지내시죵??
오랫만에 작세 놀러가니까 몇몇분들 결혼도하셨던데..
알프님은 좋은 소식 없으신가요?? 'ㅁ'??
AprilBriz 2010/04/15 00:44 # M/D
방명록 놔두고 여기다 안부를-_-ㅋ
머 걍 적당히 지내고는 있음...
좋은 소식은... 개뿔-_-