Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的示例堆栈,需要澄清';这';使用_Javascript - Fatal编程技术网

javascript中的示例堆栈,需要澄清';这';使用

javascript中的示例堆栈,需要澄清';这';使用,javascript,Javascript,我发现了这个例子,但我无法理解它是如何工作的: 函数堆栈(){ this.top=null; } Stack.prototype.push=函数(val){ 此.top={ 数据:val, 下一个:这个 } } var S1=新堆栈(); S1.推动(1); S1.推动(2); 控制台日志(S1)当函数作为对象的方法调用时,它的this设置为调用该方法的对象 您可以查看此内容以了解更多详细信息,JavaScript中的此改变了游戏规则,应该加以注意。这个的问题是它引用了您调用的函数的上下文 在

我发现了这个例子,但我无法理解它是如何工作的:

函数堆栈(){
this.top=null;
}
Stack.prototype.push=函数(val){
此.top={
数据:val,
下一个:这个
}
}
var S1=新堆栈();
S1.推动(1);
S1.推动(2);

控制台日志(S1)当函数作为对象的方法调用时,它的this设置为调用该方法的对象


您可以查看此内容以了解更多详细信息,JavaScript中的此
改变了游戏规则,应该加以注意。
这个
的问题是它引用了您调用的函数的上下文

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


顺便说一句,console.log在解析时打印,但您不能期望在该时间点解析ti。

每当调用
.push
时,都会将新对象分配给
此.top
。因此,在赋值之前,
this.top
指的是在前面的
.push
call中创建的对象。next应该是前面的。;-)哦这是一个非常好的答案@FelixKling。我一直认为,在引用前一个“this.top”之前,该对象已被覆盖。这就是我困惑的地方。谢谢你的澄清!啊,我明白了。赋值前,将对赋值右侧的任何内容进行求值,包括将
this.top
解析为分配给
next
属性的值。