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