子函数的JavaScript字符串到实际的函数 [英] JavaScript string of sub functions to actual functions

查看:112
本文介绍了子函数的JavaScript字符串到实际的函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道我可以用代表函数名称的字符串来调用函数。例如: http://www.sitepoint.com/ call-javascript-function-string-without-using-eval /

我的问题是,如何调用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆