带变量函数的变量

时间:2015-12-07 13:31:44

标签: javascript

我对javascript有疑问。为了使我的代码有条理,我将函数收集在一个变量中。

var helper = new function(){
    this.writeProp = function(){
       //write the property
    }
    this.getProp = function(){
       //get property
    }
    this.updateProp = function(){
       //get property
    }
}

到目前为止代码工作正常但我可以用helper.getProp()调用它 现在函数的数量越来越大,所以我想调用这样的函数helper.prop.get() 我怎么能做到这一点?

我的想法如下,但它不起作用。

var helper = new function(){
    var prop = new function(){
       this.write = function(){
           //write the property
        }
        this.getProp = function(){
           //get property
        }
        this.updateProp = function(){
           //get property
        }
    }
}

这样做的正确方法是什么?或者我不应该尝试以这种方式组织我的代码?

4 个答案:

答案 0 :(得分:2)

您可以简单地将prop声明为您的函数的属性。

var helper = new function(){
    this.prop = new function(){
       this.write = function(){
           //write the property
        }
        this.getProp = function(){
           //get property
        }
        this.updateProp = function(){
           //get property
        }
    }
};

试试这个代码段:

var helper = new function(){
    this.prop = new function(){
       this.write = function(){
           //write the property
        }
        this.getProp = function(){
           //get property
          alert("this.getProp");
        }
        this.updateProp = function(){
           //get property
        }
    }
};

helper.prop.getProp();

答案 1 :(得分:2)

我不明白为什么helper helper.prop应该是函数。为什么不是对象,比如

var helper = {
    prop: {
        write: function() { ... },
        ...
    }
};

答案 2 :(得分:1)

JS中的每个函数都返回undefined,除非你明确地返回其他内容,在这种情况下你应该返回prop以保持链接。

答案 3 :(得分:1)

试试这样..

/*************************************************************/
// Modular approach to write javascript.
/*************************************************************/


var foo = (function () {
    var publicAPI = {
        bar: function () {
            publicAPI.baz();
        },
        baz: function () {
            console.log("Baz");
        }
    };

    return publicAPI;

})();

foo.bar();

您可以遵循的另一种方法就是这样。

var outerObj = {};
(function(test) {
  'use strict';
  test.sayHello = function(name) {
    return 'Hi ' + name;
  }
})(outerObj);

alert(outerObj.sayHello('Kaushik'));