2017-09-14 4 views
2

안녕하세요, 저는 JS에 익숙하지 않고 함수도 객체라는 사실을 알고 있습니다.자바 스크립트에서 객체로 사용되는 함수

console.log(func); 

그것은 (사용 크롬) 반환합니다 : 우리가 지금 할 때이

let func = function(){}; 
func.foo = "foo"; 
console.log(func.foo); // prints foo 

을 : 이것은 내가 이런 식으로 그들에게 속성을 추가 할 수 있음을 의미

enter image description here

일반적으로 다른 유형의 객체에 표시되는 것처럼 객체의 속성을 표시하지 않는 이유는 무엇입니까?

enter image description here

이 네이티브 코드는 무엇입니까 : 또한 때 예를 들어 (기능)은 다음과 같은 출력을 반환을 CONSOLE.LOG하려고? 내가 other sources에서 얻은 것은이 생성자의 기능을 프로그래밍 한 다른 프로그래밍 언어 (C, C++)로 작성된 코드라는 것입니다.

미리 감사드립니다.

+3

Google 크롬의 콘솔이 'function'유형의 요소를 기록하는 방법이기 때문입니다. –

+1

... 객체처럼 보이기를 원하면 (그 속성을 볼 수 있도록)'log' 대신'dir'을 사용하십시오 :'console.dir (func);' –

+0

@ibrahimmahrir 당신은 또한' console.log (Object.assign ({}, func)); ' –

답변

4

크롬의 콘솔은 대개 더 유용하기 때문에 기능 대신 해당 속성을 표시합니다.

Screenshot of non-empty function in Chrome console

그리고 표시 할 자바 스크립트 본체가 없을 때 참 [native code]에 대체 할 수 있습니다 : 그것은 당신이 빈 기능을 사용하지 않을 때 이야기하는 것이 훨씬 쉽다.

@ 이브라힘 mahrir 점 밖으로, 기본 검사와 속성의 확장 목록을 모두 얻을 수 console.dir(func)를 사용할 수있다.