【发布时间】:2018-11-14 18:31:01
【问题描述】:
我有一个转换 JS 对象的函数。它从现有属性派生新属性,然后删除原始属性。基本上是这样的:
/** Derives "capName" property from "name" property, then deletes "name" */
function transform(person) {
person["capName"] = person["name"].toUpperCase();
delete person["name"];
return person;
}
var myPerson = {
name: "Joe",
age: 20
};
var newPerson = transform(myPerson);
console.log(myPerson, newPerson);
该函数返回所需的newPerson 对象,但也修改了原来的myPerson 对象。我宁愿以纯粹的方式执行此操作,不会修改原始的 myPerson 对象。
注意:我确实需要兼容 ES5,但我也希望看到 ES6 解决方案。
【问题讨论】:
-
你为什么创建
capName只是为了立即删除它? -
也是一个错字,我的错!
-
顺便说一句,功能不纯...
标签: javascript ecmascript-6 functional-programming ecmascript-5