javascript - Angular HttpParams 到对象,Object.defineProperty 创建属性但超出范围
问题描述
我试图通过基于 HttpParams 中的内容动态创建对象的属性来将 HttpParams 转换为对象。
private transformParamsToObject(params: HttpParams) {
let newObject = {};
params.keys().forEach(x => Object.defineProperty(newObject, x, { value: params.get(x) }));
const foo = Object.assign({}, newObject);
return foo;
}
从我在调试器中可以看到,它正在定义属性,但是当我将该对象分配给 foo 时,它们似乎不在范围内。即使我只是返回 newObject,它也没有在范围内定义它们的属性。
我觉得我可能在这里遗漏了一些非常简单的东西。任何人都可以帮忙吗?
解决方案
它们不可枚举,这就是为什么Object.assign
找不到它们。但是,Object.defineProperty
当您可以直接分配属性时,没有理由在这里使用,也没有理由在 .旁边Object.assign
创建另一个对象。做就是了foo
newObject
private transformParamsToObject(params: HttpParams) {
let newObject = {};
for (const x of params.keys())
newObject[x] = params.get(x);
return newObject;
}
推荐阅读
- python - ModuleNotFoundError:安装 python-poppler-qt5 时没有名为“sipdistutils”的模块
- mysql - 使用 mysql 8 SHA2 进行 dovecot 密码散列
- javascript - pushstate() 中的 stateobject 应该是什么?
- automation - 多版本应用程序自动化 - TOSCA
- android - 如何更改状态:点击另一个图像视图后激活?
- python - Pandas 计算 - 对于大小为 0 的轴 0,索引 0 超出范围
- reactjs - 材质 ui 使结帐可见
- ios - iOS:未报告扩展程序崩溃
- r - size() 使用 Rcpp 但不是 RcppArmadillo
- php - Laravel 5.6 时间前 在视图中