(아래는 편집하기 전에 말을했다 ...
은 내가 if(typeof response === "object" && response !== null)
을 할 수있는 생각하지만 이것은 정말 중복 보인다. null
체크 ISN . 't 중복,이 조건에 새로운 정보를 추가하기 때문에)
명시 적으로 null
을 배제 할 수
if (response !== null && typeof response === "object")
배열을 포함하여 모든 개체에 적용됩니다.
만 {}
에 대한 진실과 배열 또는 다른 내장 객체,이 작업을 수행 할 수없는 무언가 원하는 경우 : Object.prototype.toString
가 "[object Null]"
으로 사양에 정의되어 있기 때문에 ...
if (Object.prototype.toString.call(response) === "[object Object]")
을 null
, 배열의 경우 "[object Array]"
, 날짜의 경우 "[object Date]"
등입니다. 사양에 의해 정의되지 않은 생성자 함수를 통해 만들어진 객체 (리바이버 함수를 사용하더라도 직렬화되지 않은 JSON을 처리 할 경우) 또한 "[object Object]"
으로 나옵니다. (당신은 당신의 코드에서 function Foo
을 가지고 new Foo()
를 통해 개체를 만드는 경우 예는 위의 코드는 없습니다 [슬프게도, 그 객체에 대한 "[object Foo]"
을 "[object Object]"
를 반환합니다.) Object.prototype.toString.call(response)
가 response.toString()
같은 하지입니다
하는 것으로, toString
이 response
또는 프로토 타입 체인에 의해 무시 될 수 있기 때문입니다. 그래서 toString
을 Object.prototype
에서 직접 사용합니다. (누군가 을 수행하는 것을 제외하고는을 수정하는 것처럼 바보입니다.) 사양에 따라 동작합니다.
'Object.prototype = {};'을 페이지에 삽입하면 얼마나 될지 궁금한가요? – Hailwood
@Hailwood : 다른 스크립트보다 먼저? 아마 모든 것. :-) –
* 크롬 확장 기능 * 작성 * 확장 기능이 대중화 될 때까지 대기 * * * 확장 기능에 스크립트 삽입 * Mwhahahaha! : 어쩌면! – Hailwood