2013-07-28 2 views
0

함수에 매개 변수를 추가JS, 나는 이런 식으로 뭔가하고 싶은

var f = function(){ 
    var args = arguments; 
    args.push(this._caller); 
    this._base(args); 
}; 

f._caller = someObject; 
f._base = function(x,y,z){ alert(x+':'+y+':'+z);}; 

f(y,z); 

는 기본적으로 - 나는 기능 몇 가지 내부 매개 변수를주고 싶어,하지만 여전히 함수는 매개 변수를 호출해야하며, 사용자는 안 이 함수를 호출 할 때이 매개 변수에 대해 알아야합니다.

문제는 기능 본문에서 'this'는 'Window'를 의미하며 필요하지 않은 기능을 의미합니다.

어떻게하면됩니까? 그리고 나는 이것을 전혀 할 수 있습니까?

+2

['기능 # apply' (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply). 또한'arguments'는 실제 배열이 아니므로 그 배열에'push '할 수는 없습니다. – DCoder

+0

그것은 내가 일하는 '원래의'예가 아니 었습니다. 더 커 졌으므로 그러한 변화를했습니다. 정보를 주셔서 감사합니다 –

+0

, function.apply도 도움이되지 않을 것입니다, 당신은 여전히 ​​그 매개 변수를 전달해야하기 때문에, 또는 사용자가 명확하게 작성해야합니다 f.apply (f, ...), 나는 단지 f를 (..). –

답변

2
  1. thisfunction 자체가되지 않습니다,하지만 상황은 함수가 호출되었습니다. 이름을 지정하면 function의 속성에 액세스 할 수 있습니다 (var fname을 설정하지 않음).

    var f = function fn() { 
        var _caller = fn._caller; 
        var _base = fn._base; 
        // ... 
    }; 
    
  2. arguments.push()arguments으로는 존재하지 않는 방법은 실제로 Array 아니다. 비록, 당신은 .slice()로에서 Array를 만들 수 있습니다

    var args = Array.prototype.slice.call(argument, 0); 
    args.push(_caller); 
    
  3. Function#apply를 사용, 문맥 (this)을 설정하고 인수의 Array을 전달합니다.

    return _base.apply(this, args); 
    
+0

이 가능하므로 function # apply를 제외하고는 다른 방법이 없습니까? –

+0

@AndrewYukhymchak 값을 지정하려면 해당 값 또는 ['.call()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call) 이 '의. 그러나'.call()'은'Array'를 하나의 인수의 값으로 전달합니다. –

+0

댕 ... 듣고 싶은 대답이 아닙니다. TY. 닫은 –

관련 문제