JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – 您可以动态地将局部变量添加到函数中吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用对象来命名空间我的 JavaScript代码.这些对象通常包含使用apply将该指针映射到对象本身的函数.但是,每次我想访问对象的其他函数或属性时,我觉得使用这个指针是不方便的,特别是因为在很多情况下,我使用New-operator来使用函数对象.如果新的this.Line(),我更喜欢写新的Line().

如果您可以将函数的局部变量添加到php与extract(伪代码以下,它有点复杂)

var sample_object = {
  "some_function": function() {}
}

test() {
  extract(sample_object);
  some_function();   // imported from sample_object
}

甚至有可能吗

解决方法

我很确定eval是你唯一的答案但是您需要注意的是,如果您的控制范围内有任何输入,则不安全
function dynamicArgs (varName,varvalue) {
  eval("var " + varName + "=" + JSON.encode(varvalue) );
  alert(a);
}

dynamicArgs("a","value");

你可以看到这个问题.如果你的函数不知道它的名字,你的函数应如何调用动态变量?我把它硬编码到一个变量,因为我通过它调用它,但这不是一个很好的解决方案.唯一的解决方案是另一个eval.你真的应该虑你需要做什么,这是否有用.但它是可行的.

这里是在行动:http://jsfiddle.net/mendesjuan/GG3Wu/

function dynamicArgs (varName,varvalue) {
  eval('var ' + varName + "='" + varValue + "';");
  alert(eval(varName));
}

dynamicArgs("f","Here I am");

现在这里是一个例子,就像你在做什么,从this.MyConstructor创建一个变量
http://jsfiddle.net/mendesjuan/AK3WD/

var ns = {
    MyConstructor: function(val) {
       this.prop = val;
    },runConstructor: function(val) {
      var Ctor = "MyConstructor";
      eval('var ' + Ctor + ' =  this.' + Ctor);
      return new MyConstructor(val);
    }
}


alert( ns.runConstructor("Hello").prop );

如果要将对象中的所有值导入范围,这里就是一个例子;

http://jsfiddle.net/mendesjuan/AK3WD/1/

var ns = {
    MyConstructor: function(val) {
       this.val= val;
    },anotherProperty: 5,runConstructor: function(val) {
        // Bring all the variables from this into this scope
        for (var prop in this) {
            eval('var ' + prop + ' =  this.' + prop);
        }
        alert('TesTing var anotherProperty: ' + anotherProperty);
        var obj =  new MyConstructor(val);
        alert('Created MyConstructor: its prop is ' + obj.val)
    }
}


ns.runConstructor("Hello");

大佬总结

以上是大佬教程为你收集整理的javascript – 您可以动态地将局部变量添加到函数中吗?全部内容,希望文章能够帮你解决javascript – 您可以动态地将局部变量添加到函数中吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。