簡體   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