Javascript 如何向对象添加属性

Javascript 如何向对象添加属性,javascript,Javascript,我需要将准确的数据传递到webAPI: { email: "useremail", password: "userpassword", grant_type: "password" } 从登录表单中,我收到以下数据: { email: "useremail", password: "userpassword" } 我需要向对象添加授权类型:“密码” 这是我的方法 signIn(credentials) { console.log(credentials); this.a

我需要将准确的数据传递到webAPI:

{
 email: "useremail",
 password: "userpassword",
 grant_type: "password"
}
从登录表单中,我收到以下数据:

{
 email: "useremail",
 password: "userpassword"
}
我需要向对象添加授权类型:“密码”

这是我的方法

signIn(credentials) {

  console.log(credentials);

  this.authService.login(credentials)

    .subscribe(result => { 
      if (result)
        this.router.navigate(['/']);
      else  
        this.invalidLogin = true; 
    });
}
凭据是来自登录表单的数据。

如果您有:

let jsonObject = {
  email: "useremail",
  password: "userpassword",
}
我想你可以这样做

jsonObject['grant_type'] = password;
否则,简单有效:

let extendedJsonObject = {
  email: jsonObject.email,
  password: jsonObject.password,
  grant_type: 'password'
};
正如@jornsharpe在评论中所说,您也可以这样做:

let extendedJsonObject = { grant_type: 'password', ...jsonObject }
根据Kyrsberg的说法,你也可以

let extendedJsonObject = Object.assign({grant_type: 'password'}, jsonObject);

您似乎想做的是向对象添加属性这是所有JavaScript中最基本的操作之一。这是您在早期的数百或数千个教程、简介、初学者书籍、博客文章和涉及JavaScript的文档页面中都会学到的东西

我强烈建议你回去复习一下你用来学习JavaScript的材料。例如,你可以从一开始

这与打字脚本或角度无关。TypeScript是JS之上的一个类型层。Angular是一个应用程序框架。你的问题纯粹是关于JavaScript的。有点担心的是,您认为这个问题可能与打字脚本或角度有关。这表明您实际上并不了解所使用的工具之间的关系,即JavaScript、TypeScript和Angular。清楚地了解您正在使用名为JavaScript的语言。在开始使用打字稿或角形字体之前,你必须仔细研究它,并对它有很好的了解


您似乎也对术语“JSON”的含义深感困惑JSON完全是一回事:用于交换信息的基于文本的格式。JavaScript对象是而不是JSON,尽管它们彼此相似(因此是“JSON”的“J”),并且可以来回转换(“解析”和“字符串化”)。您的问题与JSON完全无关。您正在使用的对象(包括
email
等属性)是而不是JSON。如果你坚持称它们为JSON——而且也不乏试图使用JavaScript的类似误导的人——你只会把自己和周围的人弄糊涂。这些对象是普通的、旧的、普通的JavaScript对象,这就是您应该称之为它们的对象。

让extendedJsonObject={grant_type:'password',…jsonObject}
,使用对象解构。我不知道您可以解构对象,我以为它只是数组。谢谢你的提醒,这真的很有用!(我允许自己编辑我的帖子以包含您的答案)我相信您也可以这样做:
让extendedJsonObject=Object.assign({grant_type:'password'},jsonObject)
排列属性不是“TypeScript操作符”。它们既不是“类型脚本”,也不是“运算符”。它们只是spread属性,TypeScript恰好支持它。感谢您的评论,我可能会说我对前端开发(*.js语言)不太了解,我还在学习。