我找到了这个例子,我无法理解它是如何工作的:
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?
答案 0 :(得分:2)
当一个函数作为一个对象的方法被调用时,它被设置为调用该方法的对象。
您可以看到此documentation了解更多详情
答案 1 :(得分:1)
this
是一个改变游戏规则的人,应该注意它。 this
的内容是它引用了您调用的函数的上下文。
在这种情况下,当调用.push
时,这将引用Stack对象实例。
Btw console.log
会在解决时打印出来,但你不能期望在那个时刻解决问题。