Han*_*ans 9 javascript string function object
假设我有字符串:
var string = "function";
Run Code Online (Sandbox Code Playgroud)
同
window[string];
Run Code Online (Sandbox Code Playgroud)
我可以调用一个名为"function"的函数.
但是,当我有:
var string2 = "function.method.weHaveTogoDeeper";
Run Code Online (Sandbox Code Playgroud)
它应该打电话
window["function"]["method"]["weHaveTogoDeeper"]
Run Code Online (Sandbox Code Playgroud)
我做不到:
window[string2]
Run Code Online (Sandbox Code Playgroud)
在这种情况下.我不知道"."的数量.在字符串中,所以我需要一些常规.
您可以.
使用以下String.split
方法拆分字符串:
var string2 = "function.method.weHaveTogoDeeper";
var methods = string2.split(".");
Run Code Online (Sandbox Code Playgroud)
在这个例子中,methods
将是数组["function","method","weHaveTogoDeeper"]
.您现在应该可以对此数组执行简单的迭代,在前一个数组的结果上调用每个函数.
我想到的迭代是这样的:
var result = window;
for(var i in methods) {
result = result[methods[i]];
}
Run Code Online (Sandbox Code Playgroud)
在您的示例中,result
现在应该保持相同的输出
window["function"]["method"]["weHaveTogoDeeper"]
Run Code Online (Sandbox Code Playgroud)
function index(x,i) {return x[i]}
string2.split('.').reduce(index, window);
Run Code Online (Sandbox Code Playgroud)
编辑:当然,如果你从他们名字的字符串调用函数,你可能会做一些不优雅的东西,这将是不受欢迎的,特别是在协作编码设置中.我能想到的唯一用例就是编写一个测试框架,尽管可能还有一些案例.因此,请在关注此答案时谨慎使用; 一个应该使用数组,或理想的直接引用.
归档时间: |
|
查看次数: |
3452 次 |
最近记录: |