[英]How can we get the execution context of a function?
假设我们在全局上下文中声明一个变量,如下所示:
var someVariable = "someValue";
我们总是可以像window['someVariable']
一样访问它的值,因为它在全局执行上下文中。 但是,如果它在某个函数内部而不是在全局执行上下文中,我们如何以相同的方式访问它? 例如
function someFunction(someParameter) {
var someVariable = "some value";
// some code
}
我想要做喜欢的事, someFucntionContext['someParameter']
或someFucntionContext['someVariable']
访问这些变量的值在执行方面someFucntion
像我刚才没有为变量在全球范围内宣布。
如果不返回对象或实例化函数并访问属性,这是不可能的。
全局变量自动是window
对象的属性,前提是您使用var
而不是let
或const
。 例如根级函数自动成为window
对象的一个方法。 但是函数的行为不像原始对象。 你需要做类似的事情
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']
像这样
var favfood = window.fav.food;
var favcolor = window['fav']['color']
其中一种方法可能是暴露函数本身的某些属性。
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"])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.