Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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/4/oop/2.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 OOP JS:变量传递/引用查询_Javascript_Oop_Reference_Pass By Reference - Fatal编程技术网

Javascript OOP JS:变量传递/引用查询

Javascript OOP JS:变量传递/引用查询,javascript,oop,reference,pass-by-reference,Javascript,Oop,Reference,Pass By Reference,在我的最后一个线程()之后,我想我已经指出了问题所在 然而,我在试图理解为什么会发生这种情况时感到头疼 上下文:我有一个名为“Schedule”的对象,在其中我创建了52个“week”对象。每周都有函数返回MySQL格式的开始和结束日期、JS日期对象和标签。更多细节请参见前一篇文章 它工作得很好,除了我尝试启动“结束日期”时 使用运行“this.setEndDate”两侧的警报,我可以看到每次运行“setEndDate”时,“this.date”都会递增 我不希望发生这种情况:我希望“this.

在我的最后一个线程()之后,我想我已经指出了问题所在

然而,我在试图理解为什么会发生这种情况时感到头疼

上下文:我有一个名为“Schedule”的对象,在其中我创建了52个“week”对象。每周都有函数返回MySQL格式的开始和结束日期、JS日期对象和标签。更多细节请参见前一篇文章

它工作得很好,除了我尝试启动“结束日期”时

使用运行“this.setEndDate”两侧的警报,我可以看到每次运行“setEndDate”时,“this.date”都会递增

我不希望发生这种情况:我希望“this.date”保持为传递到week对象的日期,我希望有一个单独的变量“this.end_date”,基本上是this.date加上六天

我想这是一个参考问题。我发现了这篇文章:但说实话,我不明白……:)

有谁能启发我吗?

是的

var ret_date = date;
ret_date
作为对
date
的引用,它本身就是
this.date
,就像您将它传递给函数时,它是通过引用传递的

要复制日期、增量和返回

LEAP.Schedule.week.prototype.setEndDate = function(date) {
    var ret_date = new Date(date.getTime());
    return ret_date.setDate(ret_date.getDate() + 6);
}
是的

ret_date
作为对
date
的引用,它本身就是
this.date
,就像您将它传递给函数时,它是通过引用传递的

要复制日期、增量和返回

LEAP.Schedule.week.prototype.setEndDate = function(date) {
    var ret_date = new Date(date.getTime());
    return ret_date.setDate(ret_date.getDate() + 6);
}

我认为这是因为您每次都要将“this.date”传递给setEndDate,所以当您运行ret_date.setDate时,您就是在这个.date上进行的。这是因为“date”是一个对象,它的引用正在传递

您应该能够对其进行如下更改:

var mydate = new Date(this.date);
this.end_date = setEndDate(mydate);
mydate对象现在将被修改,这不会影响您的代码


更好的是,您可以根据
此.date
告诉设置的结束日期更改
此.end_日期
,您不需要传递任何信息

我认为这是因为您每次都要将“this.date”传递到setEndDate,所以当您运行ret_date.setDate时,您就是在将它传递到this.date。这是因为“date”是一个对象,它的引用正在传递

您应该能够对其进行如下更改:

var mydate = new Date(this.date);
this.end_date = setEndDate(mydate);
mydate对象现在将被修改,这不会影响您的代码


更好的是,您可以根据
此.date
告诉设置的结束日期更改
此.end_日期
,您不需要传递任何信息

啊,当然!我知道我的思路是对的,我就是不能完全理解。非常感谢你!啊,当然!我知道我的思路是对的,我就是不能完全理解。非常感谢你!