JavaScript Object.assign 无法处理 Date 对象
JavaScript Object.assign not working on Date object
可以使用此方法克隆常规对象:
a = {x:9}; //sample
b = Object.assign(Object.create(a),a);
console.log(a);
console.log(b);
然而,日期类型的变量似乎不适用于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 {}
*/
我知道我可以使用
以另一种方式创建 Date 对象的克隆
b = new Date(a)
但为什么 Object.assign 和 Object.create 不能处理日期类型?
Object.assign()
方法复制源对象的 enumerable 和 own 属性。 Date 实例实际上没有任何这些(如果您不使用自己的代码添加任何)。
特别是日期 "properties",如年、月、日等,不是 JavaScript 意义上的属性。它们是可以通过 API 检索的值。这不会使它们成为属性。
可以使用此方法克隆常规对象:
a = {x:9}; //sample
b = Object.assign(Object.create(a),a);
console.log(a);
console.log(b);
然而,日期类型的变量似乎不适用于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 {}
*/
我知道我可以使用
以另一种方式创建 Date 对象的克隆b = new Date(a)
但为什么 Object.assign 和 Object.create 不能处理日期类型?
Object.assign()
方法复制源对象的 enumerable 和 own 属性。 Date 实例实际上没有任何这些(如果您不使用自己的代码添加任何)。
特别是日期 "properties",如年、月、日等,不是 JavaScript 意义上的属性。它们是可以通过 API 检索的值。这不会使它们成为属性。