- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的 typescript 中对循环对象进行字符串化。这是我的原始代码和错误:
app.component.ts:
updateList(list: any) {
this.demolist = Array.apply(this, list);
console.log('List - ' + JSON.stringify(this.demolist));
}
TypeError: cyclic object value
然后我在我的 updateList() 方法中尝试了以下代码:
const getCircularReplacer = () => {
const seen = new WeakSet();
return (key, value) => {
if (typeof value === "object" && value !== null) {
if (seen.has(value)) {
return;
}
seen.add(value);
}
return value;
};
};
console.log(JSON.stringify(this.demolist, getCircularReplacer()));
}
但现在我收到了这个错误:
TypeError: toISOString property is not callable
谁能告诉我需要做哪些更改才能显示我的 this.listBase 的内容?
这是我的 HTML:
<upload #fileUpload (listChange)="updateList($event)" data-kind="primary" restrictFiles=".pdf,.doc,.docx">
</upload>
<list #listBase [IncludeComponent]="inputComponent" [list]="demolist">
</list>
最佳答案
您遇到的错误:
TypeError: toISOString property is not callable
意味着某处某个对象的名为toISOString
的属性 已被调用,就好像它是一个方法一样。例如:
someObj.toISOString();
在 Javascript 中已知的唯一内置并命名为 toISOString
的方法是 Date.prototype.toISOString
。
JSON.stringify() 了解一些标准值类型以及如何将它们转换(序列化)为字符串。它通常通过对它们调用预期存在的 toString()
方法来实现。它还知道 Date
对象有一个 toISOString()
方法,只要找到一个方法就会调用它。因此在这种情况下,我假设 JSON.stringify()
在 this.demoList
中遇到了一个对象,虽然它是 Date
类型,但它有一个名为 toISOString
的已定义属性(而不是方法),它会覆盖现有的 Date.prototype.toISOString()
,并且此时它尝试将其作为方法调用,但您收到此错误。
我无法猜测在您的特定情况下这个对象是哪个,因此我建议您应该使用一个一个(及其子对象)检查 this.demoList
浏览器的开发人员工具,找出哪个是“有问题的”对象。
关于javascript - 如何在 Typescript 中对循环对象进行字符串化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55934290/
我是一名优秀的程序员,十分优秀!