Javascript JS如何避免使用;这";
我最近看了一个youtube教程,这个家伙在这个系列中做了一些有趣的事情(Raining Chain的node.js游戏教程)。他的构造函数如下所示:Javascript JS如何避免使用;这";,javascript,this,Javascript,This,我最近看了一个youtube教程,这个家伙在这个系列中做了一些有趣的事情(Raining Chain的node.js游戏教程)。他的构造函数如下所示: const MakeStuff = function(param1, param2) { const self = {}; self._param1 = param1; self._param2 = param2; // and so on... return self; } const someStuff = MakeSt
const MakeStuff = function(param1, param2) {
const self = {};
self._param1 = param1;
self._param2 = param2;
// and so on...
return self;
}
const someStuff = MakeStuff(param1, param2);
然后我查了一下谷歌的“自我”是什么意思,它发现它和“这个”很相似。。。现在我真的很困惑。起初我以为他只是把它命名为“self”来模仿“this”,但要避免使用它
另外,JSLint真的很讨厌“this”,我也不喜欢让JSLint哑口无言,禁用或编辑选项(ocd),所以我试图弄清楚如何使用类,避免在类构造函数中使用“this”
我想我应该在babeljs中复制/粘贴我的类函数,看看类语法在引擎盖下到底做了什么,但我更加困惑了
我的游戏中有大约2k行代码,1.5k只是包含getter、setter和静态方法的类
上面的代码实际上是做什么的?自我是什么意思?我可以使用JS类并避免在构造函数中使用“this”吗?为什么JSLint甚至讨厌“这个”?我是否应该使用上面的示例重新编写代码,并使用prototype绑定getter、setter和静态方法
谢谢 到目前为止,其他语言使用self代替js'
this
;它是对实例上下文的引用。在这个用例中,他不是在写构造函数,而是在写工厂<代码>自我在这里只不过是一种命名约定。如果他写道:
const MakeStuff = function(param1, param2) {
const obj = {};
obj._param1 = param1;
obj._param2 = param2;
// and so on...
return obj;
}
const someStuff = MakeStuff(param1, param2);
另外,+1以感谢brk提及
self
,除非重新设置,否则引用窗口
到目前为止,其他语言使用self代替js'此
;它是对实例上下文的引用。在这个用例中,他不是在写构造函数,而是在写工厂<代码>自我在这里只不过是一种命名约定。如果他写道:
const MakeStuff = function(param1, param2) {
const obj = {};
obj._param1 = param1;
obj._param2 = param2;
// and so on...
return obj;
}
const someStuff = MakeStuff(param1, param2);
另外,+1是为了提醒我,
self
,除非重新设置,否则对我MakeStuff
而言,引用window只是一个函数,而不是构造函数。而且在您提供的代码中,self
与这个
没有任何关系。在这里,它只是函数中的一个变量,被分配了一些键和元素param1
和param2
const MakeStuff = function(param1, param2) {
const returnedElement = {};
returnedElement ._param1 = param1;
returnedElement ._param2 = param2;
// and so on...
return returnedElement ;
}
const someStuff = MakeStuff(param1, param2);
有时,您需要使用self
(有些使用that
)来访问此
,但在另一个范围内
您可以在上找到一个很好的解释:
var self=this代码>
[这是]保留对当前对象的引用,因此稍后当您调用[self
]时,您是在该对象上调用该方法,而不是在任何其他对象上调用该方法
对我来说,MakeStuff
只是一个函数,而不是构造函数。而且在您提供的代码中,self
与这个
没有任何关系。在这里,它只是函数中的一个变量,被分配了一些键和元素param1
和param2
const MakeStuff = function(param1, param2) {
const returnedElement = {};
returnedElement ._param1 = param1;
returnedElement ._param2 = param2;
// and so on...
return returnedElement ;
}
const someStuff = MakeStuff(param1, param2);
有时,您需要使用self
(有些使用that
)来访问此
,但在另一个范围内
您可以在上找到一个很好的解释:
var self=this代码>
[这是]保留对当前对象的引用,因此稍后当您调用[self
]时,您是在该对象上调用该方法,而不是在任何其他对象上调用该方法
在你的例子中,self只是一个常量的名称 在您的例子中,self只是一个常量的名称 这是JavaScript的一个重要方面,但却是最难理解的方面之一。理解在JS中进行任何面向对象的编程是绝对必要的,这对于游戏设计至关重要
我建议您了解范围,以及如何在不同范围内应用此
-
-
-
-
基本上是在运行函数时,例如
函数窗口_范围(){
这是foobar
}
此
是浏览器中的窗口
,或者定义为全局范围的任何变量。意思是this.foobar
等于window.foobar
调用函数时执行new
,例如var newfoo=newfoo()
函数foo(){
这是foobar
}
这个
突然变成了对newfoo
的引用。这意味着this.foobar
等于newfoo.foobar
这允许您创建不需要引用实际局部变量的对象newfoo
这是JavaScript的一个重要方面,但却是最难理解的方面之一。理解在JS中进行任何面向对象的编程是绝对必要的,这对于游戏设计至关重要
我建议您了解范围,以及如何在不同范围内应用此
-
-
-
-
基本上是在运行函数时,例如
函数窗口_范围(){
这是foobar
}
此
是浏览器中的窗口
,或者定义为全局范围的任何变量。意思是this.foobar
等于window.foobar
调用函数时执行new
,例如var newfoo=newfoo()
函数foo(){
这是foobar
}
这个
突然变成了对newfoo
的引用。这意味着this.foobar
等于newfoo.foobar
这允许您创建不需要引用实际局部变量的对象newfoo
上面的代码实际上是做什么的
const MakeStuff=function(param1,param2){
常量self={};
有限公司