April Breeze is blowing...

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/02/16 05:15 2010/02/16 05:15
2010/02/16 05:15
Category dev.
Tag

TRACKBACK :: http://aprilbriz.com/trackback/111

  1. WTFJS(젠장할 자바스크립트)

    : Firejune Blog 2010/02/16 08:59 Delete

    [CODE|class="javascript"|]NaN === NaN // false Number.MIN_VALUE> 0; // true? really? wtf. // It turns out that MIN_VALUE is the smallest number // GREATER THAN ZERO, which of course totally makes sense. parseInt('06'); // 6 parseInt('08');...

Leave a Comment
[로그인][오픈아이디란?]
1  ... 25 26 27 28 29 30 31 32 33  ... 122 
전체 (122)
calm (53)
passion (3)
Bicycle (31)
dev. (12)
Mac (4)
music (7)
misc. (12)
Today 284 / Yesterday 873
Total 143401
Support Wikipedia