为什么将`this`分配给`self`并运行`self.method()`?

Fre*_*ind 14 javascript

我正在读猫鼬的来源

Collection.prototype.onOpen = function () {
  var self = this;
  this.buffer = false;
  self.doQueue();
};
Run Code Online (Sandbox Code Playgroud)

我不明白为什么笔者分配thisself和运行self.doQueue().为什么不运行:

this.buffer = false;
this.doQueue();
Run Code Online (Sandbox Code Playgroud)

我是javascript的新手,感谢您的帮助.

Ric*_*ard 16

你是对的,在这种情况下,他们可以简单地使用this.

使用me或者self有点像黑客来确保使用正确的上下文this,因为在JavaScript中的范围this是变体.例如,如果你有一个事件触发你的类中的一个函数,this将会有所不同,并且不会是你的函数所包含的对象,而是调用该函数的对象.为了解决这个问题,人们经常使用meself确保他们引用正确的对象...... this,就像在实际对象中一样.