Javascript 如果给定全局变量',是否可以编写一个动态操作全局变量的函数;s名称作为函数的字符串参数?

Javascript 如果给定全局变量',是否可以编写一个动态操作全局变量的函数;s名称作为函数的字符串参数?,javascript,Javascript,是否可以将命名全局变量的字符串传递给函数,该函数在全局上下文中对该变量进行操作 示例函数: // the parameter str may be a global like: `"localStorage"`, `"sessionStorage"`. function (str, key, value){ // the `converted_str` means the `localStorage` or `sessionStorage` converted_str.setItem(

是否可以将命名全局变量的字符串传递给函数,该函数在全局上下文中对该变量进行操作

示例函数:

// the parameter str may be a global like:  `"localStorage"`, `"sessionStorage"`.
function (str, key, value){
  // the `converted_str` means the `localStorage` or `sessionStorage`
  converted_str.setItem(key, value)
}

编辑-1


其他情况如何,例如
或非窗口全局变量?

如果系统变量指的是全局变量(看起来是这样),则是:

function (str, key, value){
  window[str].setItem(key, value)
}
在浏览器中,全局变量是全局
窗口
对象的成员,可以通过该对象动态访问

对于非全局性:

如果它是当前
对象的成员,则可以使用:

something.method = function (str, key, value){
    this[str].setItem(key, value)
};
或者,如果您只是想动态访问一些变量,只需将它们放在您自己的对象中即可

var obj = {
    'something': function() {}
};

var str = 'something';
obj[str]();

window[converted\u str].setItem(key,value)
可能会起作用。@donnguyen其他情况如何,例如
this
或not window global variable?请解释为什么需要这样的“东西”?对我来说,这看起来像是一个问题。@sof-03:您必须确定该方法所属的对象是什么。在“this”的情况下,您可能需要类似“bind”的内容来指定上下文。其他情况如何,例如该窗口全局变量与否?@sof-03是否指全局对象不是
window
?如果您事先知道它可以调用什么,您可以这样做
var _global=global | | window | this
。该行首先检查全局变量
global
,如果不可用,则检查
window
,如果不可用,则默认为
this
。然后您可以在您的应用程序中使用
\u global[str]
function@ChiragRavindra这是行不通的,因为如果未定义全局,它将抛出
ReferenceError
@sof-03,只要它是某个对象的属性,您就可以动态引用它。浏览器全局变量是
窗口的成员。如果它是当前对象的成员,则可以通过
this
访问它。如果您有自己想要访问的变量,只需将它们设置为您自己对象的属性即可。