首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dateJS正在覆盖变量

dateJS正在覆盖变量
EN

Stack Overflow用户
提问于 2011-11-10 03:25:14
回答 1查看 480关注 0票数 1

我刚开始使用dateJS,它似乎是一个很棒的库,但我显然遗漏了一些东西(可能是一个愚蠢的错误),但在我的函数中,我需要3个日期: clickedDate,weekStart和weekEnd。但在使用dateJS时,我似乎覆盖了每个变量。有人能指出我的错误吗?

代码语言:javascript
复制
var clickDate = myDate;
    console.log(clickDate);
var weekStart = Date.parse(clickDate).last().monday();
    console.log(clickDate);
var weekEnd = Date.parse(clickDate).next().sunday();
    console.log(weekEnd);

console.log('break');   

console.log(clickDate);
console.log(weekStart);
console.log(weekEnd);

控制台显示以下内容

代码语言:javascript
复制
Date {Wed Nov 30 2011 00:00:00 GMT-0700 (US Mountain Standard Time)}
Date {Mon Nov 28 2011 00:00:00 GMT-0700 (US Mountain Standard Time)}
Date {Sun Dec 04 2011 00:00:00 GMT-0700 (US Mountain Standard Time)}
break
Date {Sun Dec 04 2011 00:00:00 GMT-0700 (US Mountain Standard Time)}
Date {Sun Dec 04 2011 00:00:00 GMT-0700 (US Mountain Standard Time)}
Date {Sun Dec 04 2011 00:00:00 GMT-0700 (US Mountain Standard Time)}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-22 07:21:39

这不是Datejs的问题,而是一个特性(?)JavaScript Date对象的。在JavaScript中,Date对象是可变的,并且将Date对象值设置为新变量会创建对原始对象的引用,而不是新对象。

这可以使用普通的老式JavaScript (没有Datejs)来演示:

示例

代码语言:javascript
复制
var a = new Date(2011, 0, 1);
var b = a;
var c = b;

console.log('a', a); // 1-Jan-2011
console.log('b', b); // 1-Jan-2011
console.log('c', c); // 1-Jan-2011

// setting only 'a' will cause 'b' and 'c' to update as well.
a.setDate(10);

console.log('a', a); // 10-Jan-2011
console.log('b', b); // 10-Jan-2011
console.log('c', c); // 10-Jan-2011

如果使用Datejs,解决这个问题的方法是“克隆”Date对象。下面的示例演示了如何在“b”和“c”Date对象上使用.clone()函数。

示例

代码语言:javascript
复制
var a = new Date(2011, 0, 1);
var b = a.clone(); // clone creates a new 'copy' of 'a'.
var c = b.clone();

console.log('a', a); // 1-Jan-2011
console.log('b', b); // 1-Jan-2011
console.log('c', c); // 1-Jan-2011

a.setDate(10);

console.log('a', a); // 10-Jan-2011
console.log('b', b); // 1-Jan-2011
console.log('c', c); // 1-Jan-2011

运行上面的命令,您应该会看到'b‘和'c’的最终结果仍然反映了它们的原始值,即使'a‘已经改变了。

希望这能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8070427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档