2013-02-09 3 views
2

객체는 c입니다.
기능이 있습니다 c.log(message)은 JavaScript에서 객체로 사용됩니다.

c.log.debug = true과 같은 변수를 추가 할 수 있습니까?

+2

을 시도해 봤어 : 심지어 기능 - 즉 거의모든 객체는 것을 의미? – phant0m

+0

아니요,하지만 프로토 타입의 기능에 대해 생각해 봅니다. – DmitryR

+0

당신의 생각은 무엇이며 성취하려는 것은 무엇입니까? – phant0m

답변

4

자바 스크립트가 전체 객체 지향 언어입니다.

당신이 그것을
var f = function(){}; 
alert(f instanceof Function); 
// but this statement is also true 
alert(f instanceof Object); 

// so you could add/remove propreties on a function as on any other object : 
f.foo = 'bar'; 

// and you still can call f, because f is still a function 
f(); 
0

이렇게하면 작동하지 않습니다. 대신 'debug'플래그를 매개 변수로 함수에 추가 할 수 있습니다 (예 : 약간의 수정으로

c.log = function(message, debug) { 
    if debug { 
    // do debug stuff 
    } 
    else { 
    // do other stuff 
    } 

} 
+1

음, OP가 시도하는 * 정확한 *에 따라 대답은 예 또는 아니오입니다. – phant0m

+0

그것은 해결책이 아닙니다. 나는 더 좋은 방법은'c.log()'+'c.logProperties'라고 생각하지만, 해결책이 아닙니다. – DmitryR

2

는이 같은 수 있습니다 :

var o = {f: function() { console.log('f', this.f.prop1) }}; 

o.f.prop1 = 2; 

o.f(); // f 2 
o.f.prop1; // 2 
+0

'o.f'가 매개 변수 (변수 등으로 저장 됨)로 전달되는 즉시 깨질 것입니다. – phant0m

+0

그래, 그렇지만 그렇지 않습니다. 객체의 속성 인 함수 내에서 액세스되며 함수 자체에도 속성이 있습니다. – marekful

+0

나는주의해야 할 점을 지적하면서 비판하지 않습니다.) – phant0m

관련 문제