javascript - 我们如何获得函数的执行上下文?

标签 javascript

假设我们在全局上下文中声明了一个变量,如下所示:

var someVariable = "someValue";

我们总是可以像 window['someVariable'] 一样访问它的值,因为它在全局执行上下文中。 但是,如果它在某个函数内部而不是在全局执行上下文中,我们如何才能以相同的方式访问它的值呢?例如

function someFunction(someParameter) {
  var someVariable = "some value";
  // some code
}

我想做一些像 someFucntionContext['someParameter']someFucntionContext['someVariable'] 来访问 的执行上下文中那些变量的值code>someFucntion 就像我刚刚对在全局上下文中声明的变量所做的那样。

最佳答案

如果不返回对象或实例化函数并访问属性,这是不可能的。

全局变量自动成为 window 对象的属性,前提是您使用 var 而不是 letconst。例如根级函数自动成为 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']

关于javascript - 我们如何获得函数的执行上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51979318/

相关文章:

javascript - 排序在 jQuery DataTables 中不起作用

Java8 Javascript Nashorn 异常 : no current Global instance for nashorn

javascript - 改变不同实例(不是所有实例)的 ckeditor 维度

javascript - 由 import 语句创建的命名空间列表

javascript - 谷歌浏览器的奇怪用户代理

javascript - jQuery 用户界面 : Y Mouse coords wrong when dropping a draggable object

javascript - Chrome 突然停止接受 insertRule()

javascript - 单元测试 - 何时/如何进行 stub ?

javascript - Ajax 的跨域限制 - JSON

javascript - 未捕获的 TypeError : $(. ..).selectBox 不是函数