는 브라우저에서 다음 코드를 실행하거나, Node.js를, 당신은 코멘트에 나와있는 예상 결과를 얻을 때 : 당신이 PhantomJS에서 해당 코드를 실행하면DOMWindow 유형이 null이고 정의되지 않은 이유는 무엇입니까?
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null); // "[object Null]"
은, 그러나, 출력에 [object DOMWindow]
을입니다 두 경우 모두.
undefined
과 null
이 모두 기본 유형이기 때문에 이상하게 보입니다. typeof
운영자는합니다 (typeof null === "object"
특질 포함) 다른 환경에서와 같이 작업 표시, 그래서 PhantomJS 적어도 정의되지 않은 유형의 개념이 않음을 나타납니다 : Object.prototype.toString
가 기본 포함되어
typeof undefined; // "undefined"
또한 주장을 코드. Phantom 자체가 구현을 수정하는 데 아무 것도하지 않는다는 것을 나타낼 수 있습니다. (그럴 지 모르겠지만 - 소스에서 유용한 것을 찾지 못했습니다.)
Object.prototype.toString.toString(); // "function toString() { [native code] }"
왜 PhantomJS는 올바른을 사용하지 않거나 노출하지 않는 이유는 무엇입니까? null
및 undefined
에 대한속성 값은 어떻게 변경합니까? 유형을 결정하기 위해 다른 방법을 사용할 수는 있지만 오히려 필요하지는 않습니다.
버그와 비슷합니다. – SLaks
@SLaks - 예, 처음 생각했는데 이상한 코드 나 드물게 발견 된 코드가 아닙니다 ... 나는 처음 만났을 때 가장 먼저 의심 스럽지만 이슈 트래커의 어디서나. –
호기심에서 벗어나세요 : 어떤 종류의 문제를 해결하려고합니까? 또는이 문제의 영향을받는 조건은 무엇입니까? –