javascript中的示例堆栈,需要澄清'this'用法

时间:2016-12-30 07:33:37

标签: javascript

我找到了这个例子,我无法理解它是如何工作的:

function Stack() {
  this.top = null;
}
    
Stack.prototype.push = function(val) {
  this.top = {
    data : val,
    next : this.top
  }
}
    
var S1 = new Stack();
S1.push(1);
S1.push(2);
console.log(S1);

为什么'next:this.top'解析为前一个push的'this.top'对象?而不只是返回null?

2 个答案:

答案 0 :(得分:2)

当一个函数作为一个对象的方法被调用时,它被设置为调用该方法的对象。

您可以看到此documentation了解更多详情

答案 1 :(得分:1)

JavaScript中的

this是一个改变游戏规则的人,应该注意它。 this的内容是它引用了您调用的函数的上下文。

在这种情况下,当调用.push时,这将引用Stack对象实例。

Btw console.log会在解决时打印出来,但你不能期望在那个时刻解决问题。