子函数的JavaScript字符串到实际的函数 [英] JavaScript string of sub functions to actual functions
问题描述
我的问题是,如何调用 SubTest
函数在这种情况下:
function Test(){
this.SubTest = function ){}
}
var functionString ='Test.SubTest';
它不适用于窗口[functionString]
。
$ b 我甚至试过这个(它是基本的;仅用于测试),但它返回 false
: p>
函数GetFunction(functionName){
var functions = functionName.split('。');
if(functions.length === 1){
var functionObj = window [functions [0]];
if(typeof functionObj ==='function')
return functionObj;
返回false;
}
else if(functions.length> 1){
var functionObj = window [functions [0]];
for(var i = 1; i< functions.length; i ++){
functionObj = functionObj [functions [i]];
}
if(typeof functionObj ==='function')
return functionObj;
返回false;
}
返回false;
}
var functionName ='Test.SubTest'; //从上面的代码示例
var functionObj = GetFunction(functionName); //返回false
更新:
发现这个:如何将字符串转换为javascript函数调用?,但是 getFunctionFromString
仍然无效。
SubTest
是一个在构造函数 Test
中定义的属性 这意味着访问这个函数的唯一方法是定义一个对象
var t = new Test();
t.SubTest();
函数 GetFunction Test.SubTest)
可以在函数是静态的时候工作,如:
function Test ){}
Test.SubTest = function(){}
I learned I can call functions by a string representing the function name. Example here: http://www.sitepoint.com/call-javascript-function-string-without-using-eval/
My question is, how can I call the SubTest
function in this case:
function Test() {
this.SubTest = function() { }
}
var functionString = 'Test.SubTest';
It doesn't work with window[functionString]
.
I even tried this (it's basic; just for testing) but it returns false
:
function GetFunction(functionName) {
var functions = functionName.split('.');
if ( functions.length === 1 ) {
var functionObj = window[functions[0]];
if ( typeof functionObj === 'function' )
return functionObj;
return false;
}
else if ( functions.length > 1 ) {
var functionObj = window[functions[0]];
for ( var i = 1; i < functions.length; i++ ) {
functionObj = functionObj[functions[i]];
}
if ( typeof functionObj === 'function' )
return functionObj;
return false;
}
return false;
}
var functionName = 'Test.SubTest'; // from the above code example
var functionObj = GetFunction(functionName); // returns false
Update:
Found this: How to turn a String into a javascript function call? but the getFunctionFromString
still doesn't work.
The thing is Test.SubTest
does not exist
SubTest
is a property defined in the constructor function Test
That mean that the only way to access this function is to define an object
var t = new Test();
t.SubTest();
The function GetFunction("Test.SubTest")
would work if the function was static, like :
function Test() {}
Test.SubTest = function(){}
这篇关于子函数的JavaScript字符串到实际的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!