Hem*_*ari 5 javascript javascript-objects redux
Couldn’t understand the difference between object and plain object in JavaScript.
I know how Object looks like but don’t understand plain object. I googled about this but couldn’t understand.
As per my understanding normal object looks like below
const object = {};
Run Code Online (Sandbox Code Playgroud)
Or we do call functions as objects in JavaScript
function test(){
}
Run Code Online (Sandbox Code Playgroud)
But what is plain object? how it differs with normal object. Thank you
Edit:
My confusion started about plain object after looking at below error. So my query is to understand the concept of plain object in JavaScript
Actions must be plain objects. Use custom middleware for async actions.
我认为您想将Plain Old JavaScript Object视为普通对象。
在普通JavaScript中,POJO(普通的旧JavaScript对象)是您可能拥有的最简单的对象:一组键值对,由{}对象文字符号创建或由构造new Object()。
普通的旧JavaScript对象:
使用方括号的语法糖(也称为对象文字):
var obj = {};
Run Code Online (Sandbox Code Playgroud)
使用Object()构造函数:
var obj = new Object();
Run Code Online (Sandbox Code Playgroud)
除普通对象外:
使用函数构造函数:
var Obj = function(name) {
this.name = name;
}
var c = new Obj("hello");
Run Code Online (Sandbox Code Playgroud)
使用ES6类语法:
class myObject {
constructor(name) {
this.name = name;
}
}
var e = new myObject("hello");
Run Code Online (Sandbox Code Playgroud)
通过文字符号或新对象创建的对象被称为普通对象。例子 :
let a = {aaa : 1}
let b = new Object()
Run Code Online (Sandbox Code Playgroud)
而使用函数创建的对象不是普通对象
let C = function(){}
let d = new C()
Run Code Online (Sandbox Code Playgroud)
普通对象(POJO-普通旧JavaScript对象)
var plainObj1 = {}; // typeof plainObj1 --> Object
var plainObj2 = {name : "myName"}; // typeof plainObj2 --> Object
var plainObj3 = new Object(); // typeof plainObj3 --> Object
Run Code Online (Sandbox Code Playgroud)
非普通对象
var Person = function(){}; //class
var nonPlainObj = new Person(); // typeof nonPlainObj --> function
Run Code Online (Sandbox Code Playgroud)