Google 크롬 (16.0.912.75 m,이 글을 쓰던 당시 최신 안정 버전)의 버그를 발견했을 수도 있습니다.log()로 표시되는 Chrome 콘솔은 무엇인가요?
var FakeFancy = function() {};
console.log(new FakeFancy());
var holder = {
assignTo : function (func) {
holder.constructor = func;
}
};
holder.assignTo(function() { this.type = 'anonymous' });
var globalConstructor = function() { this.type = 'global' }
console.log(new holder.constructor());
Firefox에서이 블록을 실행하면 "Object"로 나열되고 둘째는 "local"유형으로 표시됩니다. 하지만 크롬에서 실행하면
> FakeFancy
> globalConstructor.type
이 표시됩니다. 나무를 확장하면 내용이 정확합니다. 그러나 각 개체가 기록되는 첫 번째 줄로 Chrome이 표시 할 항목을 파악할 수 없습니다. 프로토 타입을 조작하지 않으므로 어디서든 상속되지 않는 평범한 오래된 개체 여야합니다.
처음에는 WebKit과 관련 있다고 생각했지만 Windows 용 최신 Safari (5.1.2 7534.52.7)에서 시도한 결과 "Object"로 표시되었습니다.
나는 생성자가 어디에서 호출되었는지에 대해 추측을하고 있다고 생각합니다. 익명의 생성자의 간접적 인 지시가 그것을 엉망으로 만들고 있습니까?
질문이 처음 두 줄과 그 출력에 관한 것이면 왜 여분의 코드를 포함합니까? ("하지만 크롬이 첫 번째 라인으로 나열하는 것을 파악할 수 없습니다.") 나는 오해해야합니다 ... – Domenic
죄송합니다. 선명도 편집을 추가했습니다. 로그 된 각 오브젝트의 첫 x 째 행. –