繁体   English   中英

JavaScript 中的对象和普通对象的区别?

[英]The difference between object and plain object in JavaScript?

无法理解 JavaScript 中对象和普通对象之间的区别。

我知道 Object 的样子,但不了解普通对象。 我用谷歌搜索了这个,但无法理解。

根据我的理解,正常对象如下所示

const object = {};

或者我们在 JavaScript 中将函数作为对象调用

function test() {

}

但什么是普通对象? 它与普通物体有何不同。 谢谢

编辑:

在查看以下错误后,我开始对普通对象感到困惑。 所以我的查询是理解 JavaScript 中普通对象的概念

动作必须是普通对象。 使用自定义中间件进行异步操作。

我认为您想将普通旧 JavaScript 对象称为普通对象。

在 vanilla JavaScript 中,POJO(Plain Old JavaScript Object)是您可能拥有的最简单的对象类型:一组键值对,由{}对象文字符号创建或使用new Object()构造。

普通的旧 JavaScript 对象:

使用括号的语法糖,也称为对象字面量:

var obj = {};

使用 Object() 构造函数:

var obj = new Object();

非普通对象:

使用函数构造函数:

var Obj = function(name) {
  this.name = name;
}
var c = new Obj("hello"); 

使用 ES6 类语法:

class myObject  {
  constructor(name) {
    this.name = name;
  }
}
var e = new myObject("hello");

普通对象(PO​​JO - 普通旧 Javascript 对象)

var plainObj1 = {}; // typeof plainObj1 --> Object
var plainObj2 = {name : "myName"}; // typeof plainObj2 --> Object
var plainObj3 = new Object(); // typeof plainObj3 --> Object

非普通对象

var Person = function(){}; //class
var nonPlainObj = new Person(); // typeof nonPlainObj --> function

通过文字符号或新对象创建的对象被称为普通对象。 例子 :

let a = {aaa : 1}

let b = new Object()

而使用函数创建的对象不是普通对象

let C = function(){}

let d = new C()

您正在谈论对象字面量,它是一个字面量对象{} 像数组文字一样使用[]而不是new Array() 这是一个原型为 Object 的对象。 字符串也是一个对象,但它的原型链看起来像:String -> Object。 数组是数组 -> 对象。 这些都是对象。

对象字面量的原型就是 Object。

任何使用对象文字符号创建的对象在 JavaScript 中都称为普通对象

function Animal(){
//Some codes
}
Var obj = new Animal();`

在您的问题中,您提到您认为对象文字和函数都是“对象”。 在 JS 中,函数是一种类型,对象也是。 所以你原来的问题,这两个项目不是对象......

在此处输入图片说明

普通对象(包裹在 { } 中的键/值对集)非常适合存储简单的数据集。

var lunch={
    sandwich:'furkey',
    drink:'soda',
    chips:true
}

就像在 react redux 中,动作是以键/值对编写的。

希望你明白。

暂无
暂无

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

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