在 JavaScript 中檢查值是否為物件

Hiten Kanwar 2023年1月30日 2021年10月2日
  1. 在 JavaScript 中使用 instanceof 函式檢查值是否為物件
  2. 在 JavaScript 中使用 typeof() 函式檢查值是否為物件
  3. 在 JavaScript 中使用使用者定義的函式檢查值是否為物件
  4. 在 JavaScript 中使用 getPrototypeOf() 方法檢查值是否為物件
在 JavaScript 中檢查值是否為物件

在 JavaScript 中,定義的每個值要麼是物件,要麼是基元。任何不是物件且沒有任何方法的值都稱為基元。任何不是原始的都是一個物件。

在本教程中,我們將檢查一個值是否是一個物件。

在 JavaScript 中使用 instanceof 函式檢查值是否為物件

我們將在 instanceof 方法的幫助下檢查該值,該方法在執行時返回物件的型別。

在下面的示例中,如果值是物件型別,該函式將返回 true

const test = {};
function isObject(val) {
    return val instanceof Object; 
}
console.log(isObject(test));

輸出:

true

但這種方法不適用於所有情況。isObject(Object.prototype)isObject(Object.create(null)) 將返回 False。

在 JavaScript 中使用 typeof() 函式檢查值是否為物件

我們可以使用 typeof() 函式檢查物件的型別。

例如,

const test = {};
function isObject(val) {
    return (typeof val === 'object');
}
console.log(isObject(test));

輸出:

true

此方法也不適用於所有測試用例。它將為空測試用例返回假陽性,為函式返回假陰性。isObject(Object) 也將返回 false

我們還可以使用此函式定義另一個函式來解決上述限制。

請參考下面的程式碼。

const test = {};
function t() {};
function isObject(val) {
    if (val === null) { return false;}
    return ( (typeof val === 'function') || (typeof val === 'object') );
}
console.log(isObject(test));
console.log(isObject(t));

輸出:

true 
true

如果值為 NULL,則上述示例中的函式返回 False。如果該值是 function 型別或 object 型別,則返回 true。否則,它返回 False。

在 JavaScript 中使用使用者定義的函式檢查值是否為物件

我們可以定義更多這樣的函式來完成基於物件的建構函式和類的工作。

例如,

const test = {};
function isObject(obj) {
  return obj === Object(obj);
}
function isObject2(obj) {
    return obj.constructor.toString().indexOf("Object") > -1;
}
console.log(isObject(test));
console.log(isObject2(test));

輸出:

true
true

在上面的例子中,我們建立了兩個函式來檢查給定的值是否是一個物件。

在 JavaScript 中使用 getPrototypeOf() 方法檢查值是否為物件

如果 getPrototypeOf 方法的引數不是物件,它將丟擲異常。我們可以用它來檢查給定值的類的型別。

例如,

const test = {};
const object1 = Object.create(test);
console.log(Object.getPrototypeOf(object1) === test);

輸出:

true

相關文章 - JavaScript Object