CyrefJS
CCyrefJS
EN
بازگشت به مستندات
نوع/از نسخه 1.38.0

isPlainObject

بررسی می‌کند که آیا یک مقدار یک Plain Object با Object.prototype یا null به‌عنوان prototype است یا خیر.

isPlainObject(value):value is Record<PropertyKey, unknown>

نحوه عملکرد

تابع ابتدا null و مقادیری را که typeof آن‌ها object نیست رد می‌کند. سپس prototype شیء را بررسی می‌کند و فقط زمانی true برمی‌گرداند که prototype برابر Object.prototype یا null باشد.

بررسی Prototype

اشیایی که با object literal یا new Object() ساخته می‌شوند معمولاً Object.prototype را به‌عنوان prototype دارند. اشیایی که با Object.create(null) ساخته می‌شوند prototype برابر null دارند و این تابع آن‌ها را نیز قبول می‌کند.

اشیای غیر Plain

آرایه‌ها، نمونه‌های Date، Map، Set و نمونه‌های کلاس‌های سفارشی Plain Object محسوب نمی‌شوند، زیرا prototype آن‌ها با Object.prototype و null متفاوت است.

Type Guard

نوع خروجی value is Record<PropertyKey, unknown> است و به TypeScript اجازه می‌دهد داخل شرط، نوع مقدار را به یک object کلید-مقدار محدود کند.

پارامترها

valueunknownالزامی

مقداری که باید بررسی شود.

مقدار بازگشتی

value is Record<PropertyKey, unknown>

اگر مقدار یک object باشد که prototype آن Object.prototype یا null باشد، true برمی‌گرداند.

مثال‌ها

01

استفاده پایه

بررسی اینکه مقادیر مختلف Plain Object هستند یا خیر.

TypeScript
import { isPlainObject } from "@cyref/js";

isPlainObject({});
// true

isPlainObject({ name: "Amir" });
// true

isPlainObject(Object.create(null));
// true

isPlainObject([]);
// false

isPlainObject(new Date());
// false

isPlainObject(null);
// false

isPlainObject("hello");
// false
02

محدود کردن نوع

isPlainObject یک Type Guard در TypeScript است و در صورت true شدن، نوع مقدار را به Record<PropertyKey, unknown> محدود می‌کند.

TypeScript
const value: unknown = {
  name: "Amir",
};

if (isPlainObject(value)) {
  console.log(value.name);
}
03

اشیاء با prototype برابر null

اشیایی که با Object.create(null) ساخته شده‌اند، توسط این تابع Plain Object محسوب می‌شوند.

TypeScript
const value = Object.create(null);

isPlainObject(value);
// true
ساخته شده با@cyref/js·مستندات رسمی