在JS中,尤其是在redux中,什么被视为普通对象?

例如,以下内容是否也被视为普通对象?

let a = {
  b: {
    c: 'd'
  }
};

Redux声明 Action 必须是简单的对象,但是如果一段时间之后我收到以下数据并将其添加到状态中该怎么办。
let payload = {
  all: ['john', 'jane'],
  byId: {
    john: {
      name: 'john',
      age: 23
    },
    jane: {
      name: 'jane',
      age: 40
    }
  }
}

我要采取行动:
function userLoad(payload) {
  return { type: USER_LOAD, payload }
}

但是,如果有效载荷不是一个普通的对象,那么这不是很好的实践。如何处理这种情况。

最佳答案

普通对象或POJO(普通javascript对象)是通过以下方式创建的对象:

let foo = {prop1: 1}  // object literal
let bar = new Object(); // new object syntax


POJO和通过构造函数创建的对象的区别如下:

function Person (name) {
  this.name = name;
}

let me  = new Person('willem')  // this object is not a POJO


console.log(Object.getPrototypeOf(me) === Person.prototype); // prototype is Person


let POJO = {};

console.log(Object.getPrototypeOf(POJO) === Object.prototype); // POJO prototype is always Object not the prototype property of the constructor functoin. This is the difference

关于javascript - 什么是普通物体?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52001739/

10-09 08:29