나는 문자열 함수 이름이 있습니다개체 내부의 문자열에서 함수를 호출 하시겠습니까?
var func = "doTest";
나는 현재 인스턴스 ("이")에 적용되는이 기능이 필요합니다;
그래서 나는 전화를해야합니다this.doTest();
내가 어떻게 할 수 있습니까? 창문으로 갈 수 없어.
감사합니다, 웨슬리
나는 문자열 함수 이름이 있습니다개체 내부의 문자열에서 함수를 호출 하시겠습니까?
var func = "doTest";
나는 현재 인스턴스 ("이")에 적용되는이 기능이 필요합니다;
그래서 나는 전화를해야합니다this.doTest();
내가 어떻게 할 수 있습니까? 창문으로 갈 수 없어.
감사합니다, 웨슬리
그냥과 같이, object[functionName]();
의 구조를 사용합니다 : 예를 들어
function Person() {};
Person.prototype.speak = function() { alert('ohai'); };
var john = new Person, action = 'speak';
john[action]();
대체 스타일 :
이var Person = {
speak: function() { alert('ohai'); },
speakDelegate: function() { var action = 'speak'; this[action](); }
};
Person.speakDelegate();
는보십시오 이것이하는 일은 this
에서 doTest
라는 이름의 멤버를 잡아입니다
var funcObj = this["doTest"];
funcObj.apply(this);
를 다음과 같습니다. 그런 다음 apply
을 통해 함수를 실행하고 함수 내에서 this
을 this
으로 바인딩하도록 javascript에 지시합니다. 난 당신이 방법 doTest
당신이 경우 this
로 값 obj
으로 실행됩니다이 경우이 아닌이 값
var obj = {
doTest: function() {
console.log("doTest called");
}
};
var doTestFunc = obj["doTest"];
doTestFunc.apply(obj);
에 동일한 코드를 고려하는 경우의 예는 조금 덜 혼란 생각 jQuery를 사용하여 당신은 할 수 있습니다 :
$(this)[func]()
this[func]();
필요 없음을 .call
또는에 컨텍스트가 참조에 유지되므로
var obj = {
doTest: function(){ console.log(this); },
fn: function(){ var name='doTest'; this[name](); }
};
obj.fn(); // logs the object, proving this has the correct context.
this.apply (FUNC)를하지 않는 것 그게 틀린가? – Wesley
답을 업데이트했습니다. 그래도 충분하지 않다면 우리에게 자세한 내용을 알려주십시오. '이'가 해결할 대상은 무엇입니까? jQuery 객체를 다루고 있습니까? 더 많은 정보. –