gpt4 book ai didi

子函数到实际函数的 JavaScript 字符串

转载 作者:行者123 更新时间:2023-12-03 10:32:05 25 4
gpt4 key购买 nike

我了解到我可以通过代表函数名称的字符串来调用函数。示例如下:http://www.sitepoint.com/call-javascript-function-string-without-using-eval/

我的问题是,在这种情况下如何调用 SubTest 函数:

  function Test() {
this.SubTest = function() { }
}

var functionString = 'Test.SubTest';

它不适用于window[functionString]

我什至尝试过这个(这是基本的;仅用于测试),但它返回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

更新:

发现这个:How to turn a String into a javascript function call?getFunctionFromString 仍然不起作用。

最佳答案

问题是Test.SubTest不存在

SubTest 是构造函数 Test 中定义的属性

这意味着访问此函数的唯一方法是定义一个对象

var t = new Test();
t.SubTest();
<小时/>

如果函数是静态的,则函数 GetFunction("Test.SubTest") 将起作用,例如:

function Test() {}
Test.SubTest = function(){}

关于子函数到实际函数的 JavaScript 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29162944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com