2012-12-27 2 views
3
var obj = {}; 
var fn = function(){}; 
obj.prop = "some value"; 
fn.prop = "some value"; 
assert(obj.prop == fn.prop, "Both are objects, both have the property."); 
assert(typeof(obj) === 'object', "Yes its an object"); 
assert(typeof(fn) === 'object', "why is this not an object"); 

functions are objects 주위 사람들로부터 듣고 이것은 내가 지금까지 믿고있는 무슨이지만, 왜 첫째 아니라 조건 passesfails 세 번째입니다.함수는 자바 스크립트의 객체입니까?

+0

예, 그렇습니다. 이제'typeof fn'의 * 결과 *는 무엇입니까? –

답변

7

직접 유형의 기능이 "function"이기 때문입니다.

그러나이 주장 놓친 : Btw는

fn instanceof Object // true 

을, 같은 "number""string" 같은 유형은 의미에서 같은 객체들이 방법을 가지고 있더라도, 엄격하게 Object하지 후손 ; 자바 스크립트를 재미있게 만드는 것들 중 하나 :

참조 : typeof 및 그 값의 범위.

7

기능 개체이지만, 특정 개체는 입니다. typeof(fn)은 "object"의 하위 유형 인 "function"으로 평가되어야합니다.