2013-07-21 6 views
2

제가 적용 별칭으로, 여기에 underscore.js.Object.prototype.toString()의 목적은 무엇입니까?

그것이이 코드를 참조하십시오

toString = ObjProto.toString, 

그러나, toString를 사용하도록 아웃에서 모든 코드 위에 사용/W 직접이 같은 액세스 할 수 있습니다.

toString() 

잘 작동하는 콘솔에서 사용해보십시오. 직접 코드로 시도해 보면 잘 작동합니다. 제 생각에는 오래된 브라우저는 이런 방식으로 접근 할 수 없을 수도 있습니다.

어떻게 자세히 살펴볼 수 있습니까?

Caniuse에는 정보가 없습니다.

Google은 처음 10 분의 1에 유용하지 않습니다.

Object.prototype에 있기 때문에 Number와 같이 모든 전역 개체가 아니라 상속하는 전역 개체에서만 상속 가능한 전역 개체를 통해 액세스 할 수 있습니다.

그러나 요점은, 전역 객체 인스턴스를 전혀 사용하지 않고도 직접 액세스 할 수 있다는 것입니다.

toString(some_var); 

여기이 왜 window.toString 모든 브라우저에서 지원되지 않고 있음을 시사 한 SO Q/A입니다. Object에서 상속

답변

6

전역 개체,

잘못된 가정이다

, global objects are host objects 그들은 어떤에서 그들이 원하는 또는 전혀 아무것도 상속하지 상속 할 수 있습니다. 예를 들어 IE10에서는 코드가 작동하지 않습니다.

특히toStringObject.prototype에 저장된 메서드는 내부 클래스 이름을 반환하는 유일한 메서드입니다. 함수, 배열, 숫자 등은 Object.prototypetoString 메서드를 상속하지 않지만 Number.prototype.toString !== Object.prototype.toString처럼 자신의toString 메서드를 정의하십시오.

+0

Window가 Object로부터 상속받지 않습니다. 그것이 사실이라는 가정이 아닙니다. 예를 들어 Object에서 상수를 나타내는 숫자입니다. 창문은 그렇지 않습니다. 말이 돼? 내가 만든 자격을 이해합니까? –

+1

@stack_temp 당신은 글로벌 객체가 Object로부터 상속 받았다고 주장했습니다. 그것이 제가 인용 한 것입니다. – Esailija

+0

'은 내부 클래스 이름을 반환하는 유일한 메소드입니다. '사실이 아닙니다. 재정의 될 수 있습니다. – freakish

관련 문제