本帖最后由 jackzhang1204 于 2012-01-13 17:40:23 编辑

解决方案 »

  1.   

    似乎没有那么复杂吧,给你参考:
    <script language="javascript">function funName() {
      alert("你好");
    }window["funName"](); // 这应该是你要的吧?</script>
      

  2.   

    function funName() {
      alert("你好");
    }(new Function("funName()"))()
      

  3.   

    可能我没说清楚,在内部调用哪个mask函数时是要根据实例调用方法时调用的参数maskID来决定的.因为mask可能有很多个mask1,mask2,mask3.....maskn.
      

  4.   

    前面两个方案应该都支持你的要求啊:function callByName(maskID) {
      var maskFunName = "mask" + maskID;
      window[maskFunName]();
    }
      

  5.   

    建议。仅仅是建议代表个人观点。同志们,不应该是都是 window[maskFunName]();把?如果是在javascript的面向对象编程中呢、。?这个也太盲目了吧。
    是不是应该在函数定义的那个环境变量里面先定义一个参数来获取当时的环境变量?也就类似于var environment = this;然后调用 environment [maskFunName]();
    不要动不动的就说什么window,比谈钱伤感情。不同意见跟帖。
      

  6.   

    看来还是这你理解了我的意思,但是按你的方法我在transition方法前定义了
    var that = this;
    然后在里面通过that[maskFunName](maskTime);来调用还是不行。另外请问下,说采用window[maskFunName]();方法的同学,那些mask函数都是私有的函数你如何在外面访问的到?
      

  7.   


    原来你们在纠结 window 这个东西啊?这个不需要纠结吧,就改为面向对象实现不行么?
    另外,二楼的并没有用window啊,他为啥也不满足你们的要求?
    var Foresee = {
      create: function(){return function() {this.init.apply(this, arguments);};},
      get: function(objId){return document.getElementById(objId);}
    };
    Foresee.Base = function() {};
    Foresee.Base.prototype = {
      funName:function() {
        alert("你好");
      },
      callByName:function(_funName) {
        this[_funName]();
      }
    };var base = new Foresee.Base();
    base.funName();
    base.callByName("funName");