JavaScript对象.赋值不能在Date对象上工作

JavaScript Object.assign not working on Date object

本文关键字:对象 工作 Date 不能 赋值 JavaScript      更新时间:2023-09-26

普通对象可以使用以下方法克隆:

a = {x:9}; //sample
b = Object.assign(Object.create(a),a);
console.log(a);
console.log(b);

然而,Date类型的变量似乎不能用于Object。assign和Object.create:

a = new Date();
b = Object.assign(Object.create(a),a);
console.log(a);
console.log(b);
/*
Results of printing a, b are not the same:
a:
Thu Oct 20 2016 11:17:29 GMT+0700 (SE Asia Standard Time)
b:
Date {}
*/

我知道我可以创建一个克隆的日期对象的另一种方式使用

b = new Date(a)

但是为什么是Object。分配和对象。创建不工作的日期类型?

Object.assign()方法复制源对象的可枚举自己的属性。Date实例实际上没有这些(如果您不使用自己的代码添加的话)。

特别是,Date"属性",如年、月、日期等,在JavaScript意义上不是属性。它们是可以通过API检索的值。这并不能使它们成为属性