【发布时间】:2018-11-02 18:12:50
【问题描述】:
我最近看了一个 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 = MakeStuff(param1, param2);
然后我检查了谷歌的“self”是什么意思,它发现它类似于“this”......现在真的让我很困惑。起初我以为他只是将其命名为“self”以模仿“this”,但请避免使用它。
另外,JSLint 真的很讨厌“this”,我讨厌让 JSLint 变笨并禁用或编辑选项 (ocd),所以我想弄清楚我将如何使用类,并避免在里面使用“this”类构造函数。
我想我会在 babeljs 中复制/粘贴我的类函数,然后看看类语法实际上在后台做了什么,但我更加困惑。
我的游戏中有大约 2k 行代码,而 1.5k 只是带有 getter、setter 和静态方法的类。
上面的代码实际上做了什么?自我是什么意思?我可以使用 JS 类并避免在构造函数中使用“this”吗?为什么 JSLint 甚至讨厌“这个”?我是否应该使用上面的示例重新编写代码并使用原型绑定 getter、setter 和静态方法?
谢谢!
【问题讨论】:
-
在这种情况下,
self只是一个变量,最初分配为空白对象,然后在返回之前附加了一些字段。将其称为self而不是thing或mine或任何其他名称并没有什么特殊。在函数的范围内,它只是一个标签,当你返回它时,它就会变成你分配给它的东西(在这种情况下是someStuff)。
标签: javascript this