假设我们在全局上下文中声明一个变量,如下所示:
var someVariable = "someValue";
我们始终可以像在全局执行上下文中一样访问其值,例如window['someVariable']
。
但是,如果它在某个函数内部而不是在全局执行上下文中,我们如何以相同的方式访问它的值?例如。
function someFunction(someParameter) {
var someVariable = "some value";
// some code
}
我想要做someFucntionContext['someParameter']
或someFucntionContext['someVariable']
之类的事情,以访问someFucntion
的执行上下文中那些变量的值,就像我刚才对全局上下文中声明的变量所做的那样
答案 0 :(得分:1)
没有返回对象或实例化函数并访问属性,这是不可能的。
如果您使用Log.ForContext<YourMiddleware>()
而不是window
或var
,则全局变量自动是let
对象的属性。例如,根级功能自动成为const
对象的方法。但是函数的行为不像原始对象。您需要做类似的事情
window
OR
function Favorites(){
return{
food: "burrito",
color: "gray"
}
}
var fav = Favorites();
var favfood = fav.food; //fav['food']
就像这样
function Favorites(){
this.food = "burrito";
this.color = "gray";
}
var fav = new Favorites();
var favfood = fav.food; //fav['food']
答案 1 :(得分:0)
一种方法可能是公开函数本身的某些属性。
function fn(){
fn.num = 100;
}
//access fn.num
console.log(fn["num"])
您可以控制要从函数本身公开的属性。例如,
function doSomething(num, addStr){
//expose num
doSomething.num = num;
var str = "Hello ";
if(addStr){
str += addStr;
}
//expose str
doSomething.str = str;
}
//set num
doSomething(100);
//access num
console.log(doSomething.num)
console.log(doSomething["num"])
//set num and str
doSomething(200, "Jerry!")
//access str
console.log(doSomething["str"])