JavaScript >> Javascript 文檔 >  >> Tags >> object

如何檢查一個變量是否是 JavaScript 中的一個對象

在之前的文章中,我們研究了在 JavaScript 中判斷對像是否為數組的不同方法。今天,你將學習如何檢查變量是否為對象。

不幸的是,我們不能使用 typeof 運算符,因為它返回 object 適用於 vanilla JavaScript 中的數組和對象。這是因為數組在內部被視為 JavaScript 中的對象:

const fruits = ['Apple', 'Mango', 'Banana'];

const user = {
    name: 'John Doe',
    age: 12
};

typeof fruits; // object

typeof user; // object

不同於 Array.isArray() 我們用於檢查變量是否為數組的方法,沒有 Object.isObject() JavaScript 中的方法。

那麼我們如何判斷某個東西是否是一個對象呢?

最快和準確的方法 使用 Object.prototype.toString() 檢查變量是否為對象 方法。

此方法是 Object 的一部分 的原型並返回一個表示對象的字符串:

Object.prototype.toString.call(fruits); // [object Array]

Object.prototype.toString.call(user); // [object Object]

正如您在上面看到的,對於對象,toString() 方法返回 [object Object] .這正是我們想要的。現在我們確定我們處理的是一個對象而不是一個數組。

讓我們編寫自己的 isObject() 方法通過使用上面的技巧來檢查一個項目是否是一個普通的對象:

const isObject = (obj) => {
    return Object.prototype.toString.call(obj) === '[object Object]';
};

isObject([3, 4, 6]);            // false

isObject({});                   // true
isObject({ apple: '🍎' });      // true

isObject('John Doe');           // false
isObject(true);                 // false
isObject(45);                   // false

查看本文以了解有關 JavaScript 對象、原型和類的更多信息。


Tutorial JavaScript 教程
  1. 一個人工作太累了,所以我創建了自己的助手

  2. 10 個驚人的 jQuery 圖像滑塊

  3. 測驗克隆反應

  4. Immer vs Ramda - 編寫 Redux reducer 的兩種方法

  5. 變量聲明 || ES6

  6. 文本框值更改未反映在 C# 後面的代碼中

  7. 實用的 JavaScript 可訪問性

  1. 你的替代解決方案是什麼?挑戰#41

  2. Node Hero——你的第一個 Node.js HTTP 服務器

  3. get 訪問器會產生每個實例的分配成本嗎?

  4. 很棒的 VSCode 擴展 - Peacock(給自己上色)

  5. 🚀 GitHub 上面向 Web 開發人員的 10 個熱門項目 - 2021 年 7 月 16 日

  6. 使用 jQuery 實現簡單的可拖動元素持久性

  7. 如何在Javascript中的另一個div之後插入一個div

  1. 編寫一個 Bash 函數來自動化 Exercism.io 練習設置

  2. CanJS 3.0 發布

  3. 我的第一年代碼

  4. CodeToday:通過使用 React Hooks 來學習