繁体   English   中英

无法在字符串上创建属性

[英]Cannot create property on string

在尝试使用以下代码在空对象上递归设置属性时,我偶然发现了一个奇怪的问题:

简化代码

const birthdays = {};

// Loop -> Passing day, id and birthday
birthdays[day] = day;
birthdays[day][id] = birthday;

日期示例: '01012017'

id 示例: 1547

生日示例: {name: John}

错误信息

Cannot create property '123' on string '06012017'

我看到一些使用 Angular 的人有这个问题,但他们的回答并没有为我解决任何问题(角度特定的语法等也是如此)。

在分配它们的值之前,需要单独创建空对象。 在这里使用const并不是一个好主意,无论如何,这只是我的建议。

 const birthdays = {}; var day = 123; var id = 21; var birthday = 2016; // Loop -> Passing day, id and birthday birthdays[day] = {}; birthdays[day][id] = birthday;

我有一个类似的错误消息TypeError: Cannot create property 'false' on boolean 'false' in Node 14.3.0 (ES 2019)下一行。

导致错误的代码:

var a = b ()
[c, d] = e ()

解决者:

var a = b ()
;
[c, d] = e ()

首先,定义对象:

let birthdays = {};

然后,获取要在该对象中使用的属性:

let day = '20210203';
let id = 77;

然后,创建一对两个属性(请记住方括号,这是 ES6 使用变量作为键的功能):

let pair = {[id]: day};

最后,像这样形成主要对象:

birthdays = {...birthdays, ...pair};

瞧,您已向空对象添加了 kvp,并且不会再出现“无法在字符串 '20210203' 上创建属性 '77'”错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM