Javascript OOP JS:变量传递/引用查询
在我的最后一个线程()之后,我想我已经指出了问题所在 然而,我在试图理解为什么会发生这种情况时感到头疼 上下文:我有一个名为“Schedule”的对象,在其中我创建了52个“week”对象。每周都有函数返回MySQL格式的开始和结束日期、JS日期对象和标签。更多细节请参见前一篇文章 它工作得很好,除了我尝试启动“结束日期”时 使用运行“this.setEndDate”两侧的警报,我可以看到每次运行“setEndDate”时,“this.date”都会递增 我不希望发生这种情况:我希望“this.date”保持为传递到week对象的日期,我希望有一个单独的变量“this.end_date”,基本上是this.date加上六天 我想这是一个参考问题。我发现了这篇文章:但说实话,我不明白……:) 有谁能启发我吗?是的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.
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_日期
,您不需要传递任何信息 啊,当然!我知道我的思路是对的,我就是不能完全理解。非常感谢你!啊,当然!我知道我的思路是对的,我就是不能完全理解。非常感谢你!