为了账号安全,请及时绑定邮箱和手机立即绑定

请问如何在javascript中动态访问本地范围?

请问如何在javascript中动态访问本地范围?

PHP
慕尼黑的夜晚无繁华 2019-12-02 04:04:35
如何在javascript中动态访问本地范围?
查看完整描述

4 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

如何在javascript中动态访问本地范围?

如果要动态使用全局函数和变量,可以使用:

window[functionName](window[varName]);

是否可以对本地范围内的变量执行相同的操作?

这段代码工作正常,但目前使用eval,我正在考虑如何做到这一点。

var test = function(){
    //this = window
    var a, b, c; //private variables

    var prop = function(name, def){
        //this = window
        eval(name+ ' = ' + (def.toSource() || undefined) + ';');    

        return function(value){
            //this = test object
            if ( !value) {
                return eval('(' + name + ')');
            }
            eval(name + ' = value;')
            return this;
        };

    };

    return {
        a:prop('a', 1),
        b:prop('b', 2),
        c:prop('c', 3),
        d:function(){
            //to show that they are accessible via to methods
            return [a,b,c];
        }
    };}();>>>testObject>>>test.propundefined>>>test.afunction()>>>test.a()1 //returns the default>>>test.a(123)Object //returns the object>>>test.a()123 //returns the changed private variable>>>test.d()[123,2,3]


查看完整回答
反对 回复 2019-12-03
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

要回答你的问题,不,没有办法在没有使用的情况下在本地范围内进行动态变量查找eval()

最好的选择是让你的“范围”只是一个常规对象[文字](即"{}"),并将你的数据粘贴在那里。


查看完整回答
反对 回复 2019-12-03
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

希望我不会过度简化,但是使用对象这么简单呢?

var test = {
    getValue : function(localName){
        return this[localName];
    },
    setValue : function(localName, value){
        return this[localName] = value;
    }};>>> test.a = 123>>> test.getValue('a')123>>> test.a123>>> test.setValue('b', 999)999>>> test.b999



查看完整回答
反对 回复 2019-12-03
  • 4 回答
  • 0 关注
  • 327 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信