gpt4 book ai didi

Javascript/ECMAscript/Spidermonkey : scope vs. 这个?

转载 作者:行者123 更新时间:2023-11-29 15:01:16 25 4
gpt4 key购买 nike

如果我执行以下操作:

var scopes = [];
scopes.push(this);
var x = "123";
function foo() {}

(function () {
var y = "456";
function bar() {}
scopes.push(this);
})();

然后 scopes 对象包含两个相同的全局对象副本,并且 foo()x 都被定义为全局对象。

但是 ybar() 是在本地范围内定义的。有没有办法获得对此范围对象的引用?如果没有,是否有任何方法可以在该范围内以编程方式定义对象?

例如,在全局范围内我可以这样做:

this.wham = "789";
this.baz = function() { return 2; }
var vname = 's';
this[vname] = "Dynamic name!"

我可以通过 whambaz()s 访问它们。

如果我有这样一个对象:

var obj = {name: 'ha', value: 3};

我正在寻找一种在本地范围内定义变量的方法,该变量的名称等于 obj.name 的内容,值等于 obj 的内容。 value,假设变量 obj 在该范围内可见。

这可能吗?

编辑:用例如下——

function define_in(scope, name, value)
{
scope[name] = value;
}

(function() {
define_in(?????, 'x', "super");
var y = x + " powered"; // would like to get "super powered"
})();

最佳答案

没有“本地范围”变量。不幸的是,您需要自己制作一个。

(function () {
var scope = {};
scope.y = "456";
scope.bar = function(){};
scopes.push(scope);
})();

关于Javascript/ECMAscript/Spidermonkey : scope vs. 这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9980411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com