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

JavaScript约定:如何将参数分配给父作用域,javascript,Javascript,这更像是一个JavaScript约定问题 通常我有类似于上面的代码。函数接受参数并将其分配给父作用域。但是,我不能在problemtest中使用它,因为作为参数的参数将参数隐藏在problemtest中 在OO编程中,我们可以使用this,但在JavaScript中,我不能使用this,因此我通常实现类似于mysolutiontest的解决方案。然而,我对这个解决方案并不完全满意。有更好的方法吗?我通常使用\u参数作为惯例。这源于我的Java过去。这与您的示例或Javascript无关。任何不强

这更像是一个JavaScript约定问题

通常我有类似于上面的代码。函数接受参数并将其分配给父作用域。但是,我不能在
problemtest
中使用它,因为作为参数的
参数将
参数隐藏在
problemtest


在OO编程中,我们可以使用
this
,但在JavaScript中,我不能使用
this
,因此我通常实现类似于
mysolutiontest
的解决方案。然而,我对这个解决方案并不完全满意。有更好的方法吗?

我通常使用
\u参数作为惯例。这源于我的Java过去。这与您的示例或Javascript无关。任何不强制您限定任何封闭范围的变量的语言都会导致相同的问题

var problemtest = function () {

    var parameters;

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

var mysolutiontest = function () {

    var parameters;

    return function (parametersIn) {
        parameters = parametersIn;
    }
}
我还看到人们使用
p_参数
来提高函数参数名的质量。这不是我的最爱之一

var mysolutiontest = function () {
  var _parameters;

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

My 2c.

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

var mysolutiontest = function () {
  var parameters;

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

有关对象中“this”如何工作的详细信息-

+1,但您可能应该指出,使用
this.property
可能会导致那些不熟悉JS对象工作方式的人出现意外行为。示例:使用
object.methodOne
作为事件处理程序。编辑并添加了Angus Croll在topic@LiorCohen-
@RobG我相信Lior指的更多的是使用单个方法作为事件处理程序,类似于
element.addEventListener('click',object.methodOne)在本例中,“this”的上下文将是元素,而不是预期的对象。是的,我展示了一个将其设置为预期值的简单方法,也可以与addEventListener或attachEvent一起使用:
element.addEventListener('click',function(){object.methodOne()})。也可以使用call或apply。
var object = {

    property: ['item'],

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

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

};

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