JavaScript约定:如何为父作用域分配参数

时间:2012-02-23 00:17:19

标签: javascript

var problemtest = function () {

    var parameters;

    return function (parameters) {
        parameters = parameters;
    }
}

var mysolutiontest = function () {

    var parameters;

    return function (parametersIn) {
        parameters = parametersIn;
    }
}

这更像是一个JavaScript常规问题。

通常我的代码与顶部的代码类似。函数接受参数并将其分配给父作用域。但是,我无法像problemtest那样使用它,因为作为参数的parameters会隐藏parameters中的problemtest

在面向对象编程中,我们可以使用this,但在JavaScript中我无法使用this,因此我通常会实现类似于mysolutiontest的解决方案。但是,我对这个解决方案并不完全满意。有没有更好的方法呢?

2 个答案:

答案 0 :(得分:4)

如果你的函数需要共享一些属性,那么将它们分配给一个对象是一种优雅而常见的模式:

var object = {

    property: ['item'],

    methodOne: function() {
        console.log(this.property);
    },

    methodTwo: function() {
        console.log(this.property); 
    }

};

object.methodOne(); // ['item']
object.methodTwo(); // ['item']

有关'this'如何在对象中起作用的更多信息 - http://javascriptweblog.wordpress.com/2010/08/30/understanding-javascripts-this/

答案 1 :(得分:2)

我通常使用_parameters作为约定。这源于我的Java过去。这与您的示例或Javascript无关。任何不强迫您限定任何封闭范围变量的语言都会导致您遇到同样的问题。

var mysolutiontest = function () {
  var _parameters;

  return function (parameters) {
    _parameters = parameters;
  }
}

我也看到人们使用p_parameters来表示质量函数参数名称。这不是我的最爱之一。

var mysolutiontest = function () {
  var parameters;

  return function (p_parameters) {
    parameters = p_parameters;
  }
}

我的2c。

相关问题