如何向对象添加属性

时间:2017-09-12 12:00:01

标签: javascript

我需要将确切的数据传递给webAPI:

{
 email: "useremail",
 password: "userpassword",
 grant_type: "password"
}

从登录表单中,我收到以下数据:

{
 email: "useremail",
 password: "userpassword"
}

我需要将 grant_type:"密码" 添加到对象中。

这是我的方法

signIn(credentials) {

  console.log(credentials);

  this.authService.login(credentials)

    .subscribe(result => { 
      if (result)
        this.router.navigate(['/']);
      else  
        this.invalidLogin = true; 
    });
}

凭据是来自登录表单的数据。

2 个答案:

答案 0 :(得分:2)

如果你有这个:

let jsonObject = {
  email: "useremail",
  password: "userpassword",
}

我认为你可以这样做

jsonObject['grant_type'] = password;

否则,简单有效:

let extendedJsonObject = {
  email: jsonObject.email,
  password: jsonObject.password,
  grant_type: 'password'
};

正如 @jonrsharpe 在评论中所说,您也可以这样做:

let extendedJsonObject = { grant_type: 'password', ...jsonObject }

根据 @Kyrsberg ,您也可以

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

答案 1 :(得分:0)

您似乎想要做的是向对象添加属性。 这是所有JavaScript中最基本的操作之一。您可以在数百或数千种教程,介绍,初学者书籍,博客文章以及涵盖JavaScript的文档页面中学到很多东西。

我强烈建议您返回并查看您用于学习JavaScript的任何材料。例如,您可以从this friendly intro to property accessors开始。

这与TypeScript或Angular无关。 TypeScript是JS之上的一个类型层。 Angular是一个应用程序框架。你的问题纯粹是关于JavaScript。你有点担心这个问题可能与TypeScript或Angular有关。它表示您实际上并不了解您正在使用的工具之间的关系,即JavaScript和TypeScript以及Angular。清楚地了解您使用的是JavaScript语言。在开始使用TypeScript或Angular之前,您必须仔细研究并熟悉它。

你似乎也对“JSON”一词的含义感到非常困惑。 JSON正是一回事:用于交换信息的基于文本的格式。 JavaScript对象不是 JSON,虽然它们彼此相似(因此是“JSON”的“J”),并且可以来回转换(“解析”和“字符串化”)。你的问题与JSON完全无关。您正在使用的对象(包括email等属性)不是 JSON。如果你坚持称他们为JSON - 并且不缺少同样被误导的人试图使用JavaScript - 你只会让自己和周围的人感到困惑。这些对象是普通的,旧的,普通的JavaScript对象,这就是你应该称之为的对象。