الفرق بين المراجعتين ل"Node.js/util"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(إضافة محتويات الصفحة.)
 
ط (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}')
 
(مراجعتان متوسطتان بواسطة مستخدم واحد آخر غير معروضتين)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الوحدة <code>util</code>‎ في Node.js}}</noinclude>
+
صُمِّمَت الوحدة <code>util</code> بشكل أساسي لتلبية احتياجات واجهات Node.js البرمجيّة الداخليّة. هذا لا يمنَع كون الأدوات، التي توفرها الوحدة، مفُيدةً للتطبيقات ولمطوري الوحدات البرمجيّة. يمكنك استيراد الوحدة والبدء باستخدامها عبر تنفيذ:<syntaxhighlight lang="javascript">const util = require('util');
صُمِّمَت الوحدة util بشكل أساسي لتلبية احتياجات واجهات Node.js البرمجيّة الداخليّة. هذا لا يمنَع كون الأدوات، التي توفرها الوحدة، مفُيدةً للتطبيقات ولمطوري الوحدات البرمجيّة. يمكنك استيراد الوحدة والبدء باستخدامها عبر تنفيذ:
 
<syntaxhighlight lang="javascript">const util = require('util');
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
==<code>util.callbackify(original)‎</code>==
 
 
== <code>util.callbackify(original)‎</code> ==
 
 
أُضيف في الإصدار: v8.2.0.
 
أُضيف في الإصدار: v8.2.0.
* <code>original‎</code>:‏ [[JavaScript/Function|<Function>]] دالة <code>async‎</code> غير متزامنة.
+
*<code>original‎</code>:‏ [[JavaScript/Function|<Function>]] دالة <code>async‎</code> غير متزامنة.
* القيم المُعادة: [[JavaScript/Function|<Function>]] دالةً من نمط دوال رد النداء (callback function).
+
*القيم المُعادة: [[JavaScript/Function|<Function>]] دالةً من نمط دوال رد النداء (callback function).
يأخُذ التابِع الدالة async (أو دالة تُعيد كاِئنًا من النوع Promise) ويعيد دالةً تتبع نمط دالة رد النداء «الخطأ أولًا» (error-first callback)، مثل أخذ رد النداء <code>(err, value) => …‎</code> كآخر وسيط. في دالة رد النداء، الوسيط الأول سيعبِّر عن سبب الرفض (أو القيمة <code>null‎</code> إن قُبِل الكائن <code>Promise‎</code>)، والوسيط الثاني سيكون القيمة المقبولة.
+
يأخُذ التابِع الدالة async (أو دالة تُعيد كاِئنًا من النوع Promise) ويعيد دالةً تتبع نمط دالة رد النداء «<nowiki/>[[Node.js/errors#.D8.B1.D8.AF.D9.88.D8.AF .D8.A7.D9.84.D9.86.D8.AF.D8.A7.D8.A1 .C2.AB.D8.A7.D9.84.D8.AE.D8.B7.D8.A3 .D8.A3.D9.88.D9.84.D9.8B.D8.A7.C2.BB .28Error-first callbacks.29|الخطأ أولًا]]» (error-first callback)، مثل أخذ رد النداء <code>(err, value) => …‎</code> كآخر وسيط. في دالة رد النداء، الوسيط الأول سيعبِّر عن سبب الرفض (أو القيمة <code>null‎</code> إن قُبِل الكائن <code>Promise‎</code>)، والوسيط الثاني سيكون القيمة المقبولة.<syntaxhighlight lang="javascript">const util = require('util');
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
async function fn() {
 
async function fn() {
سطر 21: سطر 16:
 
   console.log(ret);
 
   console.log(ret);
 
});
 
});
</syntaxhighlight>  
+
</syntaxhighlight>ستطبع هذه الشيفرة عند تنفيذها الناتج التالي:<syntaxhighlight lang="text">hello world
ستطبع هذه الشيفرة عند تنفيذها الناتج التالي:
+
</syntaxhighlight>تنفَّذ دالة رد النداء بشكل غير متزامن، وستملك آنذاك تعقُّبَ مكدسٍ محدودٍ. إن رمت دالة رد النداء خطأً، فستُطلِق العملية الحدث <code>'uncaughtException'</code>، وستخرج العملية إن لم يعالج.
<syntaxhighlight lang="text">hello world
+
 
</syntaxhighlight>
+
بما أنَّ القيمة <code>null‎</code> لها معنًى خاص في كونها قيمةً للوسيط الأول في دالة رد النداء، فإن رفضَت دالةٌ محاطَةٌ (wrapped function) الكائن <code>Project‎</code> مع قيمة خطأ (falsy value) بوصفها سببًا، فستُغلَّف القيمة بالخطأ <code>Error‎</code> مع القيمة الأصلية المخزَّنة في حقلٍ يدعى <code>reason‎</code>.<syntaxhighlight lang="javascript">function fn() {
تنفَّذ دالة رد النداء بشكل غير متزامن، وستملك آنذاك تعقُّبَ مكدسٍ محدودٍ. إن رمت دالة رد النداء خطأً، فستُطلِق العملية الحدث <code>'uncaughtException'</code>، وستخرج العملية إن لم يعالج.
 
بما أنَّ القيمة <code>null‎</code> لها معنًى خاص في كونها قيمةً للوسيط الأول في دالة رد النداء، فإن رفضَت دالةٌ محاطَةٌ (wrapped function) الكائن <code>Project‎</code> مع قيمة خطأ (falsy value) بوصفها سببًا، فستُغلَّف القيمة بالخطأ <code>Error‎</code> مع القيمة الأصلية المخزَّنة في حقلٍ يدعى <code>reason‎</code>.
 
<syntaxhighlight lang="javascript">function fn() {
 
 
   return Promise.reject(null);
 
   return Promise.reject(null);
 
}
 
}
سطر 33: سطر 25:
  
 
callbackFunction((err, ret) => {
 
callbackFunction((err, ret) => {
   // When the Promise was rejected with `null` it is wrapped with an Error and
+
   // Error غُلِّفت مع الخطأ ،'null' مع القيمة Promise عندما رُفِض الكائن
   // the original value is stored in `reason`.
+
   // 'reason' وخُزِّنت القيمة الأصلية في
 
   err && err.hasOwnProperty('reason') && err.reason === null;  // true
 
   err && err.hasOwnProperty('reason') && err.reason === null;  // true
 
});
 
});
 
</syntaxhighlight>
 
</syntaxhighlight>
== <code>util.debuglog(section)‎</code> ==
+
==<code>util.debuglog(section)‎</code>==
 
أضيف في الإصدار: v0.11.3.
 
أضيف في الإصدار: v0.11.3.
* <code>section‎</code>:‏ [[JavaScript/String|<string>]] سلسلة نصية تحدِّد الجزء الذي يجري إنشاء الدالة <code>debuglog‎</code> من أجله في التطبيق.
+
*<code>section‎</code>:‏ [[JavaScript/String|<string>]] سلسلة نصية تحدِّد الجزء الذي يجري إنشاء الدالة <code>debuglog‎</code> من أجله في التطبيق.
* القيم المعادة: [[JavaScript/Function|<Function>]] دالة تسجيل (logging function).
+
*القيم المعادة: [[JavaScript/Function|<Function>]] دالة تسجيل (logging function).
يستعمَل التابع <code>util.debuglog()‎</code> لإنشاء دالةٍ تكتب رسائل خطأٍ بشكل شرطي في مجرى الخطأ القياسي (stderr) اعتمادًا على وجود متغير البيئة <code>NODE_DEBUG‎</code>. إن ظهر الاسم <code>section‎</code> في قيمة متغير البيئة، فستعمل الدالة المعادة بشكل مشابه للتابع <code>console.error()‎</code>. أمَّا إن لم يظهر، فستنفِّذ الدالة المعادة حينئذٍ العمليَّة no-op (عمليَّة فارغة [no operation]).
+
يستعمَل التابع <code>util.debuglog()‎</code> لإنشاء دالةٍ تكتب رسائل خطأٍ بشكل شرطي في مجرى الخطأ القياسي (stderr) اعتمادًا على وجود متغير البيئة <code>NODE_DEBUG‎</code>. إن ظهر الاسم <code>section‎</code> في قيمة متغير البيئة، فستعمل الدالة المعادة بشكل مشابه للتابع <code>[[Node.js/console#console.error.28.5Bdata.5D.5B.2C ...args.5D.29.E2.80.8E|console.error()‎]]</code>. أمَّا إن لم يظهر، فستنفِّذ الدالة المعادة حينئذٍ العمليَّة no-op (عمليَّة فارغة [no operation]).<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
 
 
const util = require('util');
 
const util = require('util');
 
const debuglog = util.debuglog('foo');
 
const debuglog = util.debuglog('foo');
  
 
debuglog('hello from foo [%d]', 123);
 
debuglog('hello from foo [%d]', 123);
</syntaxhighlight>
+
</syntaxhighlight>إن شُغِّل هذا التطبيق مع ضبط متغير البيئة <code>NODE_DEBUG‎</code> بالشكل <code>NODE_DEBUG=foo‎</code>، فسيُظهِر شيئًا شبيهًا بالناتج التالي:<syntaxhighlight lang="text">FOO 3245: hello from foo [123]
إن شُغِّل هذا التطبيق مع ضبط متغير البيئة <code>NODE_DEBUG‎</code> بالشكل <code>NODE_DEBUG=foo‎</code>، فسيُظهِر شيئًا شبيهًا بالناتج التالي:
+
</syntaxhighlight>يمثِّل العدد <code>3245‎</code> معرِّف العملية. وإن شُغِّل دون ضبط متغير البيئة، فلن يُطبَع آنذاك أي ناتج. يدعم الاسم <code>section‎</code> محارف الصدفة الخاصَّة (wildcard ويشار إليها meta characters) أيضًا:<syntaxhighlight lang="javascript">const util = require('util');
<syntaxhighlight lang="text">FOO 3245: hello from foo [123]
 
</syntaxhighlight>
 
يمثِّل العدد <code>3245‎</code> معرِّف العملية. وإن شُغِّل دون ضبط متغير البيئة، فلن يُطبَع آنذاك أي ناتج.
 
يدعم الاسم <code>section‎</code> محارف الصدفة الخاصَّة (wildcard ويشار إليها meta characters) أيضًا:
 
<syntaxhighlight lang="javascript">const util = require('util');
 
 
const debuglog = util.debuglog('foo-bar');
 
const debuglog = util.debuglog('foo-bar');
  
 
debuglog('hi there, it\'s foo-bar [%d]', 2333);
 
debuglog('hi there, it\'s foo-bar [%d]', 2333);
</syntaxhighlight>
+
</syntaxhighlight>إن شُغِّل هذا التطبيق مع ضبط متغير البيئة بالشكل <code>NODE_DEBUG=foo*‎</code>، فسيطبع شيئًا شبيهًا بالناتج التالي:<syntaxhighlight lang="text">FOO-BAR 3257: hi there, it's foo-bar [2333]
إن شُغِّل هذا التطبيق مع ضبط متغير البيئة بالشكل <code>NODE_DEBUG=foo*‎</code>، فسيطبع شيئًا شبيهًا بالناتج التالي:
+
</syntaxhighlight>قد تُستعمَل عدة أسماء مفصولة بفاصلة مع <code>setion‎</code> في متغير البيئة <code>NODE_DEBUG‎</code> مثل <code>NODE_DEBUG=fs,net,tls</code>.
<syntaxhighlight lang="text">FOO-BAR 3257: hi there, it's foo-bar [2333]
+
==<code>util.deprecate(fn, msg[, code])‎</code>==
</syntaxhighlight>
+
{| class="wikitable mw-collapsible"
قد تُستعمَل عدة أسماء مفصولة بفاصلة مع <code>setion‎</code> في متغير البيئة <code>NODE_DEBUG‎</code> مثل <code>NODE_DEBUG=fs,net,tls</code>.
+
|+سجل التغييرات
== <code>util.deprecate(fn, msg[, code])‎</code> ==
+
!الإصدار
سجل التغييرات
+
!التغييرات
 
+
|-
الإصدار
+
|v10.0.0
التغييرات
+
|أصبحت تحذيرات الإهمال تُطلَق مرةً واحدةً فقط لكل شيفرة.
v10.0.0
+
|-
أصبحت تحذيرات الإهمال تُطلَق مرةً واحدةً فقط لكل شيفرة.
+
|v0.8.0
v0.8.0
+
|أضيف هذا التابع.
أضيف هذا التابع.
+
|}
 
+
*<code>fn‎</code>:‏ [[JavaScript/Function|<Function>]] الدالة التي يجري إهمالها.
* <code>fn‎</code>:‏ [[JavaScript/Function|<Function>]] الدالة التي يجري إهمالها.
+
*<code>msg</code>:‏ [[JavaScript/String|<string>]] رسالة التحذير المراد إظهارها عندما تستدعى الدالة المهملة.
* <code>msg</code>:‏ <string > رسالة التحذير المراد إظهارها عندما تستدعى الدالة المهملة.
+
*<code>code</code>:‏ [[JavaScript/String|<string>]] الشيفرة المهملة.
* <code>code</code>:‏ [[JavaScript/String|<string>]] الشيفرة المهملة.
+
*القيم المعادة: [[JavaScript/Function|<Function>]] الدالة المهملة بعد تغليفها لإطلاق تحذير.
* القيم المعادة: [[JavaScript/Function|<Function>]] الدالة المهملة بعد تغليفها لإطلاق تحذير.
+
يغلف التابع <code>util.deprecate()‎</code> الدالة (أو الصنف) <code>fn‎</code> بطريقة تبدو فيها وكأنَّها مهملةٌ.<syntaxhighlight lang="javascript">const util = require('util');
يغلف التابع <code>util.deprecate()‎</code> الدالة (أو الصنف) <code>fn‎</code> بطريقة تبدو فيها وكأنَّها مهملةٌ.
 
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
exports.obsoleteFunction = util.deprecate(() => {
 
exports.obsoleteFunction = util.deprecate(() => {
 
   // افعل شيئًا هنا.
 
   // افعل شيئًا هنا.
 
}, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.');
 
}, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.');
</syntaxhighlight>
+
</syntaxhighlight>عندما تنفَّذ هذه الشيفرة ويستدعى التابع <code>util.deprecate()‎</code>، ستعيد دالةً تطلق التحذير <code>DeprecationWarning‎</code> باستعمال الحدث <code>'warning'</code>. سيُطلَق التحذير وسيُطبع على مجرى الخطأ القياسي (stderr) أول مرة تستدعى فيها الدالة المعادة. بعد أن يُطلَق التحذير، تُستدعَى الدالة المُغلَّفَة دون إطلاق تحذير.
عندما تنفَّذ هذه الشيفرة ويستدعى التابع <code>util.deprecate()‎</code>، ستعيد دالةً تطلق التحذير <code>DeprecationWarning‎</code> باستعمال الحدث <code>'warning'</code>. سيُطلَق التحذير وسيُطبع على مجرى الخطأ القياسي (stderr) أول مرة تستدعى فيها الدالة المعادة. بعد أن يُطلَق التحذير، تُستدعَى الدالة المُغلَّفَة دون إطلاق تحذير.
+
 
إن أعطيت الشيفرة <code>code‎</code> الاختيارية نفسها في عدة استدعاءات إلى التابع <code>util.deprecate()‎</code>، فستُطلَق الاستدعاءات مرةً واحدةً فقط للشيفرة <code>code‎</code> تلك.
+
إن أعطيت الشيفرة <code>code‎</code> الاختيارية نفسها في عدة استدعاءات إلى التابع <code>util.deprecate()‎</code>، فستُطلَق الاستدعاءات مرةً واحدةً فقط للشيفرة <code>code‎</code> تلك.<syntaxhighlight lang="javascript">const util = require('util');
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
const fn1 = util.deprecate(someFunction, someMessage, 'DEP0001');
 
const fn1 = util.deprecate(someFunction, someMessage, 'DEP0001');
سطر 92: سطر 75:
 
fn1(); // DEP0001 إطلاق تحذير إهمال مع الرمز
 
fn1(); // DEP0001 إطلاق تحذير إهمال مع الرمز
 
fn2(); // لا يطلق هنا أي تحذير إهمال لأن هذه الدالة تملك الشيفرة نفسها للدالة السابقة
 
fn2(); // لا يطلق هنا أي تحذير إهمال لأن هذه الدالة تملك الشيفرة نفسها للدالة السابقة
</syntaxhighlight>
+
</syntaxhighlight>إن استعملت إمَّا الراية <code>[[Node.js/cli#.E2.80.8E--no-deprecation|--no-deprecation]]‎</code> أو الراية <code>[[Node.js/cli#.E2.80.8E--no-warnings|--no-warnings‎]]</code> أو ضبطت الخاصية <code>process.noDeprecation‎</code> إلى القيمة <code>true‎</code> قبل إطلاق أول تحذير إهمال، فلن يفعل التابع <code>util.deprecate()‎</code> أي شيء.
إن استعملت إمَّا الراية <code>--no-deprecation‎</code> أو الراية <code>--no-warnings‎</code> أو ضبطت الخاصية <code>process.noDeprecation‎</code> إلى القيمة <code>true‎</code> قبل إطلاق أول تحذير إهمال، فلن يفعل التابع <code>util.deprecate()‎</code> أي شيء.
+
 
إن استعملت إمَّا الراية <code>--trace-deprecation‎</code> أو الراية <code>--trace-warnings ‎</code> أو ضبطت الخاصية <code>process.traceDeprecation</code> إلى القيمة <code>true‎</code>، فستُطبَع التحذيرات وتعقبات المكدس (stack trace) على مجرى الخطأ القياسي (stderr) في المرة الأولى التي تستدعى فيها الدالة المهملة.
+
إن استعملت إمَّا الراية <code>[[Node.js/cli#.E2.80.8E--trace-deprecation|--trace-deprecation‎]]</code> أو الراية <code>[[Node.js/cli#.E2.80.8E--trace-warnings|--trace-warnings]]‎</code> أو ضبطت الخاصية <code>process.traceDeprecation</code> إلى القيمة <code>true‎</code>، فستُطبَع التحذيرات وتعقبات المكدس (stack trace) على مجرى الخطأ القياسي (stderr) في المرة الأولى التي تستدعى فيها الدالة المهملة
إن استعملت الراية <code>--throw-deprecation‎</code> أو ضُبطَت الخاصية <code>process.throwDeprecation‎</code> إلى القيمة <code>true‎</code>، فسيُرمَى استثناءٌ عندما تستدعَى الدالة المهملة.
 
إنَّ للراية <code>--throw-deprecation‎</code> والخاصية <code>process.throwDeprecation‎</code> أولويةٌ على الراية <code>--trace-deprecation‎</code> والخاصية <code>process.traceDeprecation‎</code>.
 
== <code>util.format(format[, ...args])‎</code> ==
 
سجل التغييرات
 
  
الإصدار
+
إن استعملت الراية ‎<code>[[Node.js/cli#.E2.80.8E--throw-deprecation|--throw-deprecation‎]]</code> أو ضُبطَت الخاصية <code>process.throwDeprecation‎</code> إلى القيمة <code>true‎</code>، فسيُرمَى استثناءٌ عندما تستدعَى الدالة المهملة.
التغييرات
 
v8.4.0
 
أصبح المحدِّدان ‎%‎o‎ و ‎%O‎ مدعومين الآن.
 
v0.5.3
 
أضيف هذا التابع.
 
  
* <code>format‎</code>:‏ [[JavaScript/String|<string>]] سلسلة تنسيق نصية تشبه التنسيق المستعمل في <code>printf‎</code>.
+
إنَّ للراية [[Node.js/cli#.E2.80.8E--throw-deprecation|‎<code>--throw-deprecation‎</code>]] والخاصية <code>process.throwDeprecation‎</code> أولويةٌ على الراية ‎<code>[[Node.js/cli#.E2.80.8E--throw-deprecation|--trace-deprecation]]‎</code> والخاصية <code>process.traceDeprecation‎</code>.
 +
==<code>util.format(format[, ...args])‎</code>==
 +
{| class="wikitable mw-collapsible"
 +
|+سجل التغييرات
 +
!الإصدار
 +
!التغييرات
 +
|-
 +
|v8.4.0
 +
|أصبح المحدِّدان ‎<code>%‎o</code>‎ و <code>‎%O</code>‎ مدعومين الآن.
 +
|-
 +
|v0.5.3
 +
|أضيف هذا التابع.
 +
|}
 +
*<code>format‎</code>:‏ [[JavaScript/String|<string>]] سلسلة تنسيق نصية تشبه التنسيق المستعمل في <code>printf‎</code>.
 
يعيد التابع <code>util.format()‎</code> سلسلةً نصيةً منسَّقة باستعمال الوسيط الأول على أنَّه تنسيقٌ شبيهٌ بالتنسيق <code>printf‎</code>.
 
يعيد التابع <code>util.format()‎</code> سلسلةً نصيةً منسَّقة باستعمال الوسيط الأول على أنَّه تنسيقٌ شبيهٌ بالتنسيق <code>printf‎</code>.
 +
 
الوسيط الأول هو سلسلة نصية تحوي رموزًا نائبةً (placeholder tokens). يُستبدَل بكل رمز نائب القيمة المحوَّلة من الوسيط المقابل. الرموز النائبة المدعومة هي:
 
الوسيط الأول هو سلسلة نصية تحوي رموزًا نائبةً (placeholder tokens). يُستبدَل بكل رمز نائب القيمة المحوَّلة من الوسيط المقابل. الرموز النائبة المدعومة هي:
* <code>%s‎</code>: سلسلة نصية.
+
*<code>%s‎</code>: سلسلة نصية.
* <code>%d</code>: عددٌ صحيح أو عشري.
+
*<code>%d</code>: عددٌ صحيح أو عشري.
* <code>%i‎</code>: عدد صحيح.
+
*<code>%i‎</code>: عدد صحيح.
* <code>%f‎</code>: عدد عشري.
+
*<code>%f‎</code>: عدد عشري.
* <code>%j‎</code>: صيغة JSON. يستبدل بها السلسلة النصية <code>'[Circular]'</code> إن احتوى الوسيط على مراجع دائرية (circular references).
+
*<code>%j‎</code>: صيغة JSON. يستبدل بها السلسلة النصية <code>'[Circular]'</code> إن احتوى الوسيط على مراجع دائرية (circular references).
* <code>%o‎</code>: كائنٌ. سلسلةٌ نصيةٌ ممثلةٌ لكائنٍ مع تنسيق الكائن العام في JavaScript. هذا يشبه التابع <code>util.inspect()‎</code> مع الخيارات <code>{ showHidden: true, showProxy: true }‎</code>. سيُظهر ذلك الكائن كاملًا من ضمنها الخاصيات والوسطاء (proxies) الغير قابلة للإحصاء (non-enumerable).
+
*<code>%o‎</code>: كائنٌ. سلسلةٌ نصيةٌ ممثلةٌ لكائنٍ مع تنسيق الكائن العام في JavaScript. هذا يشبه التابع <code>util.inspect()‎</code> مع الخيارات <code>{ showHidden: true, showProxy: true }‎</code>. سيُظهر ذلك الكائن كاملًا من ضمنها الخاصيات والوسطاء (proxies) الغير قابلة للإحصاء (non-enumerable).
* <code>%O‎</code>: كائنٌ. سلسلةٌ نصيةٌ ممثلةٌ لكائنٍ مع تنسيق الكائن العام في JavaScript. هذا يشبه التابع <code>util.inspect()‎</code> دون خيارات. سيُظهر ذلك الكائن كاملًا باستثناء الخاصيات والوسطاء (proxies) الغير قابلة للإحصاء (non-enumerable).
+
*<code>%O‎</code>: كائنٌ. سلسلةٌ نصيةٌ ممثلةٌ لكائنٍ مع تنسيق الكائن العام في JavaScript. هذا يشبه التابع <code>util.inspect()‎</code> دون خيارات. سيُظهر ذلك الكائن كاملًا باستثناء الخاصيات والوسطاء (proxies) الغير قابلة للإحصاء (non-enumerable).
* <code>%%‎</code>: إشارة مئوية واحدة ('%'). هذا لا يستهلك وسيطًا.
+
*<code>%%‎</code>: إشارة مئوية واحدة ('%'). هذا لا يستهلك وسيطًا.
* القيم المعادة: [[JavaScript/String|<string>]] السلسلة النصية بعد تنسيقها.
+
*القيم المعادة: [[JavaScript/String|<string>]] السلسلة النصية بعد تنسيقها.
إن لم يكن هنالك وسيطٌ مقابلٌ للرمز النائب المعطى، فسيُطبَع الرمز النائب دون استبدال.
+
إن لم يكن هنالك وسيطٌ مقابلٌ للرمز النائب المعطى، فسيُطبَع الرمز النائب دون استبدال.<syntaxhighlight lang="javascript">util.format('%s:%s', 'foo');
<syntaxhighlight lang="javascript">util.format('%s:%s', 'foo');
 
 
// 'foo:%s' :سيُعاد
 
// 'foo:%s' :سيُعاد
</syntaxhighlight>
+
</syntaxhighlight>وإن كانت الوسائط المُمرَّرة إلى التابع <code>util.format()‎</code> أكثرَ عددًا من الرموز النائبة، فستُحوَّل هذه الوسائط إلى سلاسل نصية ثمَّ تضاف إلى السلسلة النصية المعادة، إذ يُفصَل كل وسيط بفراغ. الوسائط الزائدة التي من النوع (أي يعطي استعمال <code>typeof‎</code> معها) <code>'object'</code> أو <code>'symbol'</code> (باستثناء <code>null‎</code>) ستُحوَّل باستعمال التابع <code>util.inspect()‎</code>.<syntaxhighlight lang="javascript">util.format('%s:%s', 'foo', 'bar', 'baz'); // 'foo:bar baz'
وإن كانت الوسائط المُمرَّرة إلى التابع <code>util.format()‎</code> أكثرَ عددًا من الرموز النائبة، فستُحوَّل هذه الوسائط إلى سلاسل نصية ثمَّ تضاف إلى السلسلة النصية المعادة، إذ يُفصَل كل وسيط بفراغ. الوسائط الزائدة التي من النوع (أي يعطي استعمال <code>typeof‎</code> معها) <code>'object'</code> أو <code>'symbol'</code> (باستثناء <code>null‎</code>) ستُحوَّل باستعمال التابع <code>util.inspect()‎</code>.
+
</syntaxhighlight>إن لم يكن الوسيط الأول سلسلةً نصيةً، فسيعيد التابع <code>util.format()‎</code> حينئذٍ سلسلة نصية ناتجة عن جمع جميع الوسائط مع بعضها عبر فصل كلٍّ منها بفراغ، إذ يحوَّل آنذاك الوسيط إلى سلسلة نصية عبر التابع <code>util.inspect()‎</code>.<syntaxhighlight lang="javascript">util.format(1, 2, 3); // '1 2 3'
<syntaxhighlight lang="javascript">util.format('%s:%s', 'foo', 'bar', 'baz'); // 'foo:bar baz'
+
</syntaxhighlight>إن مُرِّر وسيطٌ واحدٌ فقط إلى التابع <code>util.format()‎</code>، فسيُعاد الوسيط نفسه دون أي تنسيق.<syntaxhighlight lang="javascript">util.format('%% %s'); // '%% %s'
</syntaxhighlight>
+
</syntaxhighlight>انتبه إلى أنَّ التابع <code>util.format()‎</code> هو تابعٌ متزامنٌ يستعمل بشكل أساسي كأداةٍ لتنقيح الأخطاء. يمكن أن تسبِّب بعض قيم المدخلات حملًا زائدًا كبيرًا على الأداء قد يحجب حلقة الأحداث (event loop)، لذا استعمل هذا التابع بحذر ولا تستعمله في مسارات الشيفرة التنفيذية (code execution paths وتدعى أيضًا hot code path).
إن لم يكن الوسيط الأول سلسلةً نصيةً، فسيعيد التابع <code>util.format()‎</code> حينئذٍ سلسلة نصية ناتجة عن جمع جميع الوسائط مع بعضها عبر فصل كلٍّ منها بفراغ، إذ يحوَّل آنذاك الوسيط إلى سلسلة نصية عبر التابع <code>util.inspect()‎</code>.
+
==<code>util.formatWithOptions(inspectOptions, format[, ...args])‎</code>==
<syntaxhighlight lang="javascript">util.format(1, 2, 3); // '1 2 3'
 
</syntaxhighlight>
 
إن مُرِّر وسيطٌ واحدٌ فقط إلى التابع <code>util.format()‎</code>، فسيُعاد الوسيط نفسه دون أي تنسيق.
 
<syntaxhighlight lang="javascript">util.format('%% %s'); // '%% %s'
 
</syntaxhighlight>
 
انتبه إلى أنَّ التابع <code>util.format()‎</code> هو تابعٌ متزامنٌ يستعمل بشكل أساسي كأداةٍ لتنقيح الأخطاء. يمكن أن تسبِّب بعض قيم المدخلات حملًا زائدًا كبيرًا على الأداء قد يحجب حلقة الأحداث (event loop)، لذا استعمل هذا التابع بحذر ولا تستعمله في مسارات الشيفرة التنفيذية (code execution paths وتدعى أيضًا hot code path).
 
== <code>util.formatWithOptions(inspectOptions, format[, ...args])‎</code> ==
 
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>inspectOptions‎</code>:‏ [[JavaScript/Object|<Object>]]
+
*<code>inspectOptions‎</code>:‏ [[JavaScript/Object|<Object>]]
* <code>format</code>:‏ [[JavaScript/String|<string>]]
+
*<code>format</code>:‏ [[JavaScript/String|<string>]]
هذا التابع ممائل تمامًا للتابع <code>util.format()‎</code> باستثناء أنَّه يأخذ الوسيط <code>inspectOptions‎</code> الذي يحدِّد الخيارات التي تُمرَّر إلى التابع <code>util.inspect()‎</code>.
+
هذا التابع ممائل تمامًا للتابع <code>util.format()‎</code> باستثناء أنَّه يأخذ الوسيط <code>inspectOptions‎</code> الذي يحدِّد الخيارات التي تُمرَّر إلى التابع <code>util.inspect()‎</code>.<syntaxhighlight lang="javascript">util.formatWithOptions({ colors: true }, 'See object %O', { foo: 42 });
<syntaxhighlight lang="javascript">util.formatWithOptions({ colors: true }, 'See object %O', { foo: 42 });
 
 
// إذ يلوَّن العدد '42' كعدد 'See object { foo: 42 }' ستعاد السلسلة
 
// إذ يلوَّن العدد '42' كعدد 'See object { foo: 42 }' ستعاد السلسلة
 
// عند طباعته على الطرفية
 
// عند طباعته على الطرفية
</syntaxhighlight>  
+
</syntaxhighlight>
== <code>util.getSystemErrorName(err)‎</code> ==
+
==<code>util.getSystemErrorName(err)‎</code>==
 
أضيف في الإصدار: v9.7.0.
 
أضيف في الإصدار: v9.7.0.
* <code>err‎</code>:‏ [[JavaScript/Number|<number>]]
+
*<code>err‎</code>:‏ [[JavaScript/Number|<number>]]
* القيم المعادة: [[JavaScript/String|<string>]]
+
*القيم المعادة: [[JavaScript/String|<string>]]
يعيد هذا التابع سلسلةً نصيةً تمثِّل اسم الخطأ ذا الرمز <code>err‎</code> الناتج عن إحدى واجهات Node.js البرمجية. تعتمد عملية الربط بين رموز الأخطاء وأسمائها على المنصة المستعملة. اطلع على أسماء الأخطاء الشائعة في القسم «أخطاء النظام الشائعة».
+
يعيد هذا التابع سلسلةً نصيةً تمثِّل اسم الخطأ ذا الرمز <code>err‎</code> الناتج عن إحدى واجهات Node.js البرمجية. تعتمد عملية الربط بين رموز الأخطاء وأسمائها على المنصة المستعملة. اطلع على أسماء الأخطاء الشائعة في القسم «<nowiki/>[[Node.js/errors#.D8.A3.D8.AE.D8.B7.D8.A7.D8.A1 .D8.A7.D9.84.D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D8.B4.D8.A7.D8.A6.D8.B9.D8.A9|أخطاء النظام الشائعة]]».<syntaxhighlight lang="javascript">fs.access('file/that/does/not/exist', (err) => {
<syntaxhighlight lang="javascript">fs.access('file/that/does/not/exist', (err) => {
 
 
   const name = util.getSystemErrorName(err.errno);
 
   const name = util.getSystemErrorName(err.errno);
 
   console.error(name);  // ENOENT
 
   console.error(name);  // ENOENT
 
});
 
});
</syntaxhighlight>  
+
</syntaxhighlight>
 +
==<code>util.inherits(constructor, superConstructor)‎</code>==
 +
{| class="wikitable mw-collapsible"
 +
|+سجل التغييرات
 +
!الإصدار
 +
!التغييرات
 +
|-
 +
|v5.0.0
 +
|أصبح بإمكان المعامل <code>constructor</code> أن يشير إلى الصنف ES6 الآن.
 +
|-
 +
|v0.3.0
 +
|أضيف هذا التابع.
 +
|}
 +
*<code>constructor‎</code>:‏ [[JavaScript/Function|<Function>]]
 +
*<code>superConstructor</code>:‏ [[JavaScript/Function|<Function>]]
 +
استعمال التابع <code>util.inherits()‎</code> غير موثوق. استعمل رجاءً الكلمات المفتاحية ES6 <code>class‎</code> و <code>extends‎</code> للحصول على دعمٍ للوراثة على مستوى اللغة. لاحظ أيضًا أن النمطين [https://github.com/nodejs/node/issues/4179 غير متوافقان دلاليًّا].
  
== <code>util.inherits(constructor, superConstructor)</code> ==
+
يورث هذا التابع التوابع <code>prototype‎</code> من باني (constructor) لآخر. سيُضبَط <code>prototype‎‎</code> للباني <code>constructor‎</code> إلى الكائن الجديد المنشأ من الباني <code>superConstructor‎</code>.
سجل التغييرات
 
 
 
الإصدار
 
التغييرات
 
v5.0.0
 
أصبح بإمكان المعامل constructor أن يشير إلى الصنف ES6 الآن.
 
v0.3.0
 
أضيف هذا التابع.
 
  
* <code>constructor‎</code>:‏ [[JavaScript/Function|<Function>]]
+
للسهولة، سيكون الباني <code>superConstructor‎</code> قابلًا للوصول عبر الخاصية <code>constructor.super_‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
* <code>superConstructor</code>:‏ [[JavaScript/Function|<Function>]]
 
استعمال التابع <code>util.inherits()‎</code> غير موثوق. استعمل رجاءً الكلمات المفتاحية ES6 <code>class‎</code> و <code>extends‎</code> للحصول على دعمٍ للوراثة على مستوى اللغة. لاحظ أيضًا أن النمطين غير متوافقان دلاليًّا.
 
يورث هذا التابع التوابع <code>prototype‎</code> من باني (constructor) لآخر. سيُضبَط <code>prototype‎‎</code> للباني <code>constructor‎</code> إلى الكائن الجديد المنشأ من الباني <code>superConstructor‎</code>.
 
للسهولة، سيكون الباني <code>superConstructor‎</code> قابلًا للوصول عبر الخاصية <code>constructor.super_‎</code>.
 
<syntaxhighlight lang="javascript">const util = require('util');
 
 
const EventEmitter = require('events');
 
const EventEmitter = require('events');
  
سطر 189: سطر 169:
 
   console.log(`Received data: "${data}"`);
 
   console.log(`Received data: "${data}"`);
 
});
 
});
stream.write('It works!'); // Received data: "It works!"
+
stream.write('It works!'); // "It works!" :البيانات المستلمة
</syntaxhighlight>
+
</syntaxhighlight>المثال التالي هو عن ES6 وكيفية استعمال الكلمتين المفتاحيتين <code>class‎</code> و <code>extends‎</code>:<syntaxhighlight lang="javascript">const EventEmitter = require('events');
المثال التالي هو عن ES6 وكيفية استعمال الكلمتين المفتاحيتين <code>class‎</code> و <code>extends‎</code>:
 
<syntaxhighlight lang="javascript">const EventEmitter = require('events');
 
  
 
class MyStream extends EventEmitter {
 
class MyStream extends EventEmitter {
سطر 207: سطر 185:
 
stream.write('With ES6');
 
stream.write('With ES6');
 
</syntaxhighlight>
 
</syntaxhighlight>
== <code>util.inspect(object[, options])#
 
util.inspect(object[, showHidden[, depth[, colors]]])
 
‎</code> ==
 
سجل التغييرات
 
  
الإصدار
+
== <code>util.inspect(object[,options])‎ و util.inspect(object[, showHidden[, depth[, colors]]])‎</code> ==
التغييرات
+
{| class="wikitable mw-collapsible"
v10.6.0
+
|+سجل التغييرات
أصبح فحص القوائم المرتبطة (linked lists) والكائنات المشابهة متاحًا الآن حتى حجم مكدِّس الاستدعاء الأقصى.
+
!الإصدار
v10.0.0
+
!التغييرات
يمكن الآن فحص المدخلتين WeakMap‎ و WeakSet‎.
+
|-
v9.9.0
+
|v10.6.0
أصبح الخيار compact‎ مدعومًا الآن.
+
|أصبح فحص القوائم المرتبطة (linked lists) والكائنات المشابهة متاحًا الآن حتى حجم مكدِّس الاستدعاء الأقصى.
v6.6.0
+
|-
تستطيع دوال الفحص المخصصة (custom inspection functions) الآن إعادة this‎.
+
|v10.0.0
v6.3.0
+
|يمكن الآن فحص المدخلتين <code>WeakMap‎</code> و <code>WeakSet‎</code>.
أصبح الخيار breakLength‎ مدعومًا الآن.  
+
|-
v6.1.0
+
|v9.9.0
أصبح الخيار maxArrayLength مدعومًا الآن. بعبارة أخرى، ستُقتطع الآن المصفوفات الطويلة بشكل افتراضي.
+
|أصبح الخيار <code>compact‎</code> مدعومًا الآن.
v6.1.0
+
|-
أصبح الخيار showProxy مدعومًا الآن.  
+
|v6.6.0
v0.3.0
+
|تستطيع دوال الفحص المخصصة (custom inspection functions) الآن إعادة <code>this‎</code>.
أضيف هذا التابع.
+
|-
 +
|v6.3.0
 +
|أصبح الخيار <code>breakLength‎</code> مدعومًا الآن.
 +
|-
 +
|v6.1.0
 +
|أصبح الخيار <code>maxArrayLength</code> مدعومًا الآن. بعبارة أخرى، ستُقتطع الآن المصفوفات الطويلة بشكل افتراضي.
 +
|-
 +
|v6.1.0
 +
|أصبح الخيار <code>showProxy</code> مدعومًا الآن.
 +
|-
 +
|v0.3.0
 +
|أضيف هذا التابع.
 +
|}
 +
*<code>object</code>:‏ <any> أي نوع أساسي من أنواع JavaScript أو كائن من النوع <code>Object‎</code>.
 +
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]
 +
**<code>showHidden</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية إن كانت <code>true‎</code>، فستُضمَّن رموز وخاصيات الكائن <code>object‎</code> غير القابلة للإحصاء (non-enumerable) في السلسلة النصية المنسقة الناتجة بالإضافة إلى المدخلات <code>WeakMap‎</code> و <code>WeakSet‎</code>. القيمة الافتراضية هي: <code>false‎</code>.
 +
**<code>depth</code>:‏ [[JavaScript/Number|<number>]] يحدِّد عدد مرات التكرار (recurse) أثناء تنسيق الكائن <code>object‎</code>. هذا الخيار مفيدٌ مع الكائنات الكبيرة المعقدة. إن أردت أن تصل عمليات التكرار إلى حجم مكدس الاستدعاء الأقصى، فمرِّر القيمة <code>Infinity‎</code> أو القيمة <code>null‎</code> لهذا الخيار. القيمة الافتراضية هي: 2.
 +
**<code>colors</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية إن كانت <code>true‎</code>، فستُنسَّق المخرجات بحسب معيار ANSI للألوان. اطلع على القسم «تخصيص الألوان» لمزيد من المعلومات حول تخصيص الألوان في التابع <code>util.inspect</code>. القيمة الافتراضية هي: <code>false</code>.
 +
**<code>customInspect</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية إن كانت <code>false</code>، فلن تستدعى الدوال <code>inspect(depth, opts)‎</code> المخصصة آنذاك. القيمة الافتراضية هي: <code>true‎</code>.
 +
**<code>showProxy</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية إن كانت <code>false‎</code>، فستُفحَص (introspected) حينئذٍ الكائنات والدوال التي هي كائناتٌ من النوع <code>Proxy‎</code> لإظهار الكائنات <code>target‎</code> والكائنات <code>handler‎</code> الخاصة بهم. القيمة الافتراضية هي: <code>false‎</code>.
 +
**<code>maxArrayLength</code>:‏ [[JavaScript/Number|<number>]] يحدِّد عدد العناصر الأقصى للكائنات <code>Array‎</code>، و <code>TypedArray‎</code>، و <code>WeakMap‎</code>، و <code>WeakSet‎</code> التي ستُشمَل في عملية التنسيق. إن أردت إظهار جميع العناصر، فاضبط هذا الخيار إلى القيمة <code>null‎</code> أو القيمة <code>Infinity‎</code>. إن ضبط هذا الخيار إلى القيمة 0 أو أية قيمة سالبة، فلن يُظهَر أي عنصر. القيمة الافتراضية هي: 100.
 +
**<code>breakLength</code>:‏ [[JavaScript/Number|<number>]] الطول الذي ستُجزَّأ عنده مفاتيح الكائن إلى عدة أسطر. إن ضبط هذا الخيار إلى القيمة <code>Infinity‎</code>، فسيُنسَّق الكائن على أنَّه سطرٌ واحدٌ. القيمة الافتراضية هي: 60 من أجل التوافقية الإرثية (legacy compatibility).
 +
**<code>compact</code>:‏ [[JavaScript/Boolean|<boolean>]] يؤدي ضبط هذا الخيار إلى القيمة <code>false‎</code> إلى تغيير القيمة الافتراضية للبادئة الفارغة المراد استعمالها لفصل الأسطر لكل مفتاح كائن عوضًا عن وضع عدة خاصيات في سطر واحد. سيُفصَل أيضًا النص الذي يزيد عن الحجم <code>breakLength‎</code> إلى أجزاء أصغر وأفضل للقراءة بالإضافة إلى إزاحة الكائنات بشكل مماثل تمامًا للمصفوفات. انتبه إلى أنَّ أي جزء من النص لن يقل عن 16 محرف بغض النظر عن القيمة <code>breakLength‎‎</code>. لمزيد من المعلومات، تفحَّص المثال في الأسفل. القيمة الافتراضية هي: <code>true‎</code>.
  
* <code>object</code>:‏ <any> أي نوع أساسي من أنواع JavaScript أو كائن من النوع <code>Object‎</code>.
+
* القيم المعادة: [[JavaScript/String|<string>]] سلسلة نصية تمثِّل الكائن المعطى.
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]
+
يعيد التابع <code>util.inspect()‎</code> سلسلةً نصيةً تمثِّل الوسيط <code>object</code> المعطى الذي يراد تنقيحه من الأخطاء (debugging). قد تتغيَّر مخرجات التابع <code>util.inspect‎</code> في أي وقت ولا يجب الاعتماد عليها برمجيًا. قد تمرَّر الخيارات <code>option‎</code> لضبط كيفية تنسيق السلسلة النصية من نواحٍ محدَّدة. سيستعمل التابع <code>util.inspect()‎</code> اسم الباني و/أو <code>@@toStringTag‎</code> لإنشاء وسمٍ قابل للتعريف (identifiable tag) للقيمة الناتجة.<syntaxhighlight lang="javascript">class Foo {
** <code>showHidden</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية إن كانت <code>true‎</code>، فستُضمَّن رموز وخاصيات الكائن <code>object‎</code> غير القابلة للإحصاء (non-enumerable) في السلسلة النصية المنسقة الناتجة بالإضافة إلى المدخلات <code>WeakMap‎</code> و <code>WeakSet‎</code>. القيمة الافتراضية هي: <code>false‎</code>.
 
** <code>depth</code>:‏ [[JavaScript/Number|<number>]] يحدِّد عدد مرات التكرار (recurse) أثناء تنسيق الكائن <code>object‎</code>. هذا الخيار مفيدٌ مع الكائنات الكبيرة المعقدة. إن أردت أن تصل عمليات التكرار إلى حجم مكدس الاستدعاء الأقصى، فمرِّر القيمة <code>Infinity‎</code> أو القيمة <code>null‎</code> لهذا الخيار. القيمة الافتراضية هي: 2.
 
** <code>colors</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية إن كانت <code>true‎</code>، فستُنسَّق المخرجات بحسب معيار ANSI للألوان. اطلع على القسم «تخصيص الألوان» لمزيد من المعلومات حول تخصيص الألوان في التابع <code>util.inspect</code>. القيمة الافتراضية هي: <code>false</code>.
 
** <code>customInspect</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية إن كانت <code>false</code>، فلن تستدعى الدوال <code>inspect(depth, opts)‎</code> المخصصة آنذاك. القيمة الافتراضية هي: <code>true‎</code>.
 
** <code>showProxy</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية إن كانت <code>false‎</code>، فستُفحَص (introspected) حينئذٍ الكائنات والدوال التي هي كائناتٌ من النوع <code>Proxy‎</code> لإظهار الكائنات <code>target‎</code> والكائنات <code>handler‎</code> الخاصة بهم. القيمة الافتراضية هي: <code>false‎</code>.
 
** <code>maxArrayLength</code>:‏ [[JavaScript/Number|<number>]] يحدِّد عدد العناصر الأقصى للكائنات <code>Array‎</code>، و <code>TypedArray‎</code>، و <code>WeakMap‎</code>، و <code>WeakSet‎</code> التي ستُشمَل في عملية التنسيق. إن أردت إظهار جميع العناصر، فاضبط هذا الخيار إلى القيمة <code>null‎</code> أو القيمة <code>Infinity‎</code>. إن ضبط هذا الخيار إلى القيمة 0 أو أية قيمة سالبة، فلن يُظهَر أي عنصر. القيمة الافتراضية هي: 100.
 
** <code>breakLength</code>:‏ [[JavaScript/Number|<number>]] الطول الذي ستُجزَّأ عنده مفاتيح الكائن إلى عدة أسطر. إن ضبط هذا الخيار إلى القيمة <code>Infinity‎</code>، فسيُنسَّق الكائن على أنَّه سطرٌ واحدٌ. القيمة الافتراضية هي: 60 من أجل التوافقية الإرثية (legacy compatibility).
 
** <code>compact</code>:‏ [[JavaScript/Boolean|<boolean>]] يؤدي ضبط هذا الخيار إلى القيمة <code>false‎</code> إلى تغيير القيمة الافتراضية للبادئة الفارغة المراد استعمالها لفصل الأسطر لكل مفتاح كائن عوضًا عن وضع عدة خاصيات في سطر واحد. سيُفصَل أيضًا النص الذي يزيد عن الحجم <code>breakLength‎</code> إلى أجزاء أصغر وأفضل للقراءة بالإضافة إلى إزاحة الكائنات بشكل مماثل تمامًا للمصفوفات. انتبه إلى أنَّ أي جزء من النص لن يقل عن 16 محرف بغض النظر عن القيمة <code>breakLength‎‎</code>. لمزيد من المعلومات، تفحَّص المثال في الأسفل. القيمة الافتراضية هي: <code>true‎</code>.
 
القيم المعادة: [[JavaScript/String|<string>]] سلسلة نصية تمثِّل الكائن المعطى.
 
يعيد التابع <code>util.inspect()‎</code> سلسلةً نصيةً تمثِّل الوسيط <code>object</code> المعطى الذي يراد تنقيحه من الأخطاء (debugging). قد تتغيَّر مخرجات التابع <code>util.inspect‎</code> في أي وقت ولا يجب الاعتماد عليها برمجيًا. قد تمرَّر الخيارات <code>option‎</code> لضبط كيفية تنسيق السلسلة النصية من نواحٍ محدَّدة. سيستعمل التابع <code>util.inspect()‎</code> اسم الباني و/أو <code>@@toStringTag‎</code> لإنشاء وسمٍ قابل للتعريف (identifiable tag) للقيمة الناتجة.
 
<syntaxhighlight lang="javascript">class Foo {
 
 
   get [Symbol.toStringTag]() {
 
   get [Symbol.toStringTag]() {
 
     return 'bar';
 
     return 'bar';
سطر 256: سطر 241:
 
util.inspect(new Bar()); // 'Bar {}'
 
util.inspect(new Bar()); // 'Bar {}'
 
util.inspect(baz);      // '[foo] {}'
 
util.inspect(baz);      // '[foo] {}'
</syntaxhighlight>
+
</syntaxhighlight>يتفحَّص المثال التالي جميع خاصيات الكائن <code>utile‎</code>:<syntaxhighlight lang="javascript">const util = require('util');
يتفحَّص المثال التالي جميع خاصيات الكائن <code>utile‎</code>:
 
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
console.log(util.inspect(util, { showHidden: true, depth: null }));
 
console.log(util.inspect(util, { showHidden: true, depth: null }));
</syntaxhighlight>
+
</syntaxhighlight>قد تعطي القيم الدوال <code>inspect(depth, opts)‎</code> المخصَّصة الخاصة بها، إذ يُمرَّر إليها عند استدعائها الخيار <code>depth‎</code> في التفحُّص التكراري (recursive inspection) بالإضافة إلى الخيار <code>options‎</code> الذي مُرِّر إلى التابع <code>util.inspect()‎</code>. يسلط المثال التالي الضوء على الخيار <code>compact‎</code>:<syntaxhighlight lang="javascript">const util = require('util');
قد تعطي القيم الدوال <code>inspect(depth, opts)‎</code> المخصَّصة الخاصة بها، إذ يُمرَّر إليها عند استدعائها الخيار <code>depth‎</code> في التفحُّص التكراري (recursive inspection) بالإضافة إلى الخيار <code>options‎</code> الذي مُرِّر إلى التابع <code>util.inspect()‎</code>.
 
يسلط المثال التالي الضوء على الخيار <code>compact‎</code>:
 
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
const o = {
 
const o = {
سطر 313: سطر 293:
 
// في سطر واحد
 
// في سطر واحد
 
// إلى قطع أصغر "Lorem ipsum" سيتسبَّب في تقطيع النص `breakLength` تقليل قيمة الخيار
 
// إلى قطع أصغر "Lorem ipsum" سيتسبَّب في تقطيع النص `breakLength` تقليل قيمة الخيار
</syntaxhighlight>
+
</syntaxhighlight>يسمح استعمال الخيار <code>showHidden‎</code> بفحص المدخلات <code>WeakMap‎</code> و <code>WeakSet‎</code>. إن كان هنالك مدخلات تزيد عن القيمة <code>maxArrayLength‎</code>، فلا يمكن معرفة أية مدخلات ستظهر. هذا يعني أنَّ استدعاء التابع <code>util.inspect()‎</code> لجلب نفس مدخلات الكائن <code>WeakSet‎</code> مرتين قد لا يعطي نفس النتيجة المتوقعة بل قد يعطي ناتجًا مختلفًا. أضف إلى ذلك أنَّ أي عنصر قد ينتقل إلى المهملات عبر مجمِّع المهملات (garbage collector) في أي لحظة من الزمن إن لم يبقى هنالك مرجعًا قويًا لذلك الكائن. بناءً على ذلك، ليس هنالك أي ضمان للحصول على نفس الناتج في كل مرة.<syntaxhighlight lang="javascript">const { inspect } = require('util');
يسمح استعمال الخيار <code>showHidden‎</code> بفحص المدخلات <code>WeakMap‎</code> و <code>WeakSet‎</code>. إن كان هنالك مدخلات تزيد عن القيمة <code>maxArrayLength‎</code>، فلا يمكن معرفة أية مدخلات ستظهر. هذا يعني أنَّ استدعاء التابع <code>util.inspect()‎</code> لجلب نفس مدخلات الكائن <code>WeakSet‎</code> مرتين قد لا يعطي نفس النتيجة المتوقعة بل قد يعطي ناتجًا مختلفًا. أضف إلى ذلك أنَّ أي عنصر قد ينتقل إلى المهملات عبر مجمِّع المهملات (garbage collector) في أي لحظة من الزمن إن لم يبقى هنالك مرجعًا قويًا لذلك الكائن. بناءً على ذلك، ليس هنالك أي ضمان للحصول على نفس الناتج في كل مرة.
 
<syntaxhighlight lang="javascript">const { inspect } = require('util');
 
  
 
const obj = { a: 1 };
 
const obj = { a: 1 };
سطر 323: سطر 301:
 
console.log(inspect(weakSet, { showHidden: true }));
 
console.log(inspect(weakSet, { showHidden: true }));
 
// WeakSet { { a: 1 }, { b: 2 } }
 
// WeakSet { { a: 1 }, { b: 2 } }
</syntaxhighlight>
+
</syntaxhighlight>انتبه إلى أنَّ التابع <code>util.inspect()‎</code> هو تابعٌ متزامنٌ يُستعمَل بشكل أساسي كأداة لتنقيح الأخطاء. يمكن أن تسبِّب بعض قيم المدخلات حملًا زائدًا كبيرًا على الأداء قد يحجب حلقة الأحداث (event loop)، لذا استعمل هذا التابع بحذر ولا تستعمله في مسارات الشيفرة التنفيذية (code execution paths وتدعى أيضًا hot code path).
انتبه إلى أنَّ التابع <code>util.inspect()‎</code> هو تابعٌ متزامنٌ يُستعمَل بشكل أساسي كأداة لتنقيح الأخطاء. يمكن أن تسبِّب بعض قيم المدخلات حملًا زائدًا كبيرًا على الأداء قد يحجب حلقة الأحداث (event loop)، لذا استعمل هذا التابع بحذر ولا تستعمله في مسارات الشيفرة التنفيذية (code execution paths وتدعى أيضًا hot code path).
+
===تخصيص الألوان في التابع <code>util.inspect‎</code>===
=== تخصيص الألوان في التابع <code>util.inspect‎</code> ===
 
 
يمكن تخصيص ألوان المخرجات (إن كانت مفعلة) في التابع <code>util.inspect‎</code> على الصعيد العام (globally) عبر الخاصيتين <code>util.inspect.styles‎</code> و <code>util.inspect.colors‎</code>.
 
يمكن تخصيص ألوان المخرجات (إن كانت مفعلة) في التابع <code>util.inspect‎</code> على الصعيد العام (globally) عبر الخاصيتين <code>util.inspect.styles‎</code> و <code>util.inspect.colors‎</code>.
الخاصية <code>util.inspect.styles‎</code> هي خريطة (map) تربط اسم النمط (style name) باللون في الخاصية <code>util.inspect.colors‎</code>.
+
 
الألوان الافتراضية المرتبطة بالأنماط هي:
+
الخاصية <code>util.inspect.styles‎</code> هي خريطة (map) تربط اسم النمط (style name) باللون في الخاصية <code>util.inspect.colors‎</code>. الألوان الافتراضية المرتبطة بالأنماط هي:
* <code>yellow‎</code> - <code>number‎</code>  
+
*<code>yellow‎</code> - <code>number‎</code>
* <code>yellow‎</code> - <code>boolean‎</code>  
+
*<code>yellow‎</code> - <code>boolean‎</code>
* <code>green‎</code> - <code>string‎</code>  
+
*<code>green‎</code> - <code>string‎</code>
* <code>magenta‎</code> - <code>date‎</code>  
+
*<code>magenta‎</code> - <code>date‎</code>
* <code>red‎</code> - <code>‎regexp</code>  
+
*<code>red‎</code> - <code>‎regexp</code>
* <code>‎bold</code> - <code>null‎</code>  
+
*<code>‎bold</code> - <code>null‎</code>
* <code>gray‎</code> - <code>undefined‎</code>  
+
*<code>gray‎</code> - <code>undefined‎</code>
* <code>‎cyan</code> - <code>special‎</code> (لا تطبق على الدوال في الوقت الحالي.)
+
*<code>‎cyan</code> - <code>special‎</code> (لا تطبق على الدوال في الوقت الحالي.)
* <code>name‎</code> - (لا يوجد لون)
+
*<code>name‎</code> - (لا يوجد لون)
 
رموز الألوان المعرَّفة مسبقًا هي: <code>white‎</code>، و <code>gray</code>، و <code>black</code>، و <code>blue</code>، و <code>cyan</code>، و <code>green</code>، و <code>magenta</code>، و <code>red</code>، و <code>yellow</code>. هنالك أيضًا الرموز <code>bold‎</code>، و <code>italic</code>، و <code>underline</code>، و <code>inverse</code>.
 
رموز الألوان المعرَّفة مسبقًا هي: <code>white‎</code>، و <code>gray</code>، و <code>black</code>، و <code>blue</code>، و <code>cyan</code>، و <code>green</code>، و <code>magenta</code>، و <code>red</code>، و <code>yellow</code>. هنالك أيضًا الرموز <code>bold‎</code>، و <code>italic</code>، و <code>underline</code>، و <code>inverse</code>.
 +
 
يستعمل نمط الألوان رموز تحكم ANSI التي قد لا تكون مدعومةً في جميع الطرفيات.
 
يستعمل نمط الألوان رموز تحكم ANSI التي قد لا تكون مدعومةً في جميع الطرفيات.
=== تخصيص دوال الفحص في الكائنات (Custom inspection functions on Objects) ===
+
===تخصيص دوال الفحص في الكائنات (Custom inspection functions on Objects)===
قد تُعرِّف الكائنات دالةً من الشكل <code>[util.inspect.custom](depth, opts)‎</code> (أو الدالة <code>inspect(depth, opts)‎</code> المكافئة إلا أنَّها أصبحت مهملة) خاصة بها سيستدعيها التابع <code>util.inspect()‎</code> ويستعمل الناتج الذي تعيده عند تفحُّص الكائن:
+
قد تُعرِّف الكائنات دالةً من الشكل <code>[util.inspect.custom](depth, opts)‎</code> (أو الدالة <code>inspect(depth, opts)‎</code> المكافئة إلا أنَّها أصبحت مهملة) خاصة بها سيستدعيها التابع <code>util.inspect()‎</code> ويستعمل الناتج الذي تعيده عند تفحُّص الكائن:<syntaxhighlight lang="javascript">const util = require('util');
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
class Box {
 
class Box {
سطر 370: سطر 347:
 
util.inspect(box);
 
util.inspect(box);
 
// "Box< true >" :سيُعاد
 
// "Box< true >" :سيُعاد
</syntaxhighlight>
+
</syntaxhighlight>تعيد الدوال <code>[util.inspect.custom](depth, opts)‎</code> المخصَّصة عادةً سلسلةً نصيةً ولكن قد تعيد قيمة ذات نوع آخر ستُنسَّق وفقًا لذك عبر التابع <code>util.inspect()‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
تعيد الدوال <code>[util.inspect.custom](depth, opts)‎</code> المخصَّصة عادةً سلسلةً نصيةً ولكن قد تعيد قيمة ذات نوع آخر ستُنسَّق وفقًا لذك عبر التابع <code>util.inspect()‎</code>.
 
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
const obj = { foo: 'this will not show up in the inspect() output' };
 
const obj = { foo: 'this will not show up in the inspect() output' };
سطر 382: سطر 357:
 
// "{ bar: 'baz' }" :سيُعاد
 
// "{ bar: 'baz' }" :سيُعاد
 
</syntaxhighlight>
 
</syntaxhighlight>
=== الخاصية <code>util.inspect.custom‎</code> ===
+
===الخاصية <code>util.inspect.custom‎</code>===
أضيفت في الإصدار: v6.6.0.
+
أضيفت في الإصدار: v6.6.0. تمثِّل هذه الخاصية قيمةً من النوع <code>symbol‎</code> يمكن استعمالها للتصريح عن دوال فحص مخصَّصة. اطلع على القسم «تخصيص دوال الفحص في الكائنات» في الأعلى.
تمثِّل هذه الخاصية قيمةً من النوع <code>symbol‎</code> يمكن استعمالها للتصريح عن دوال فحص مخصَّصة. اطلع على القسم «تخصيص دوال الفحص في الكائنات» في الأعلى.
+
===الخاصية <code>util.inspect.defaultOptions</code>===
=== الخاصية <code>util.inspect.defaultOptions</code> ===
+
أضيفت في الإصدار: v6.4.0. تسمح القيمة <code>defaultOptions‎</code> بتخصيص القيم الافتراضية للخيارات التي يستعملها التابع <code>util.inspect‎</code>. هذه الخاصية مفيدةٌ جدًا لتوابع مثل <code>console.log‎</code> أو <code>util.format‎</code> والتي تستدعي التابع <code>util.inspect‎</code> ضمنيًّا. يجب أن تُضبَط إلى كائنٍ يحوي خيارًا واحدًا أو أكثر من خيارات التابع <code>util.inspect()‎</code>. يمكن أيضًا ضبط خاصيات الكائن <code>options‎</code> مباشرةً.<syntaxhighlight lang="javascript">const util = require('util');
أضيفت في الإصدار: v6.4.0.
 
تسمح القيمة <code>defaultOptions‎</code> بتخصيص القيم الافتراضية للخيارات التي يستعملها التابع <code>util.inspect‎</code>. هذه الخاصية مفيدةٌ جدًا لتوابع مثل <code>console.log‎</code> أو <code>util.format‎</code> والتي تستدعي التابع <code>util.inspect‎</code> ضمنيًّا. يجب أن تُضبَط إلى كائنٍ يحوي خيارًا واحدًا أو أكثر من خيارات التابع <code>util.inspect()‎</code>. يمكن أيضًا ضبط خاصيات الكائن <code>options‎</code> مباشرةً.
 
<syntaxhighlight lang="javascript">const util = require('util');
 
 
const arr = Array(101).fill(0);
 
const arr = Array(101).fill(0);
  
سطر 395: سطر 367:
 
console.log(arr); // logs the full array
 
console.log(arr); // logs the full array
 
</syntaxhighlight>
 
</syntaxhighlight>
== <code>util.isDeepStrictEqual(val1, val2)‎</code> ==
+
==<code>util.isDeepStrictEqual(val1, val2)‎</code>==
 
أضيف في الإصدار: v9.0.0.
 
أضيف في الإصدار: v9.0.0.
* <code>val1</code>:‏ <any>
+
*<code>val1</code>:‏ <any>
* <code>val2</code>:‏ <any>
+
*<code>val2</code>:‏ <any>
القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
 
 +
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
 
يعيد هذا التابع القيمة <code>true‎</code> إن كان الوسيطان <code>val1‎</code> و <code>val2‎</code> متساويين بالعمق وبشكل صارم. خلا ذلك، سيُعيِد القيمة <code>false‎</code>.
 
يعيد هذا التابع القيمة <code>true‎</code> إن كان الوسيطان <code>val1‎</code> و <code>val2‎</code> متساويين بالعمق وبشكل صارم. خلا ذلك، سيُعيِد القيمة <code>false‎</code>.
اطلع على توثيق التابع <code>assert.deepStrictEqual()‎</code> لمزيد من المعلومات حول التساوي بالعمق وبشكل صارم.
+
 
== <code>util.promisify(original)‎</code> ==
+
اطلع على توثيق التابع <code>[[Node.js/assert#.D8.A7.D9.84.D8.AF.D8.A7.D9.84.D8.A9 assert.deepStrictEqual.28actual.2C expected.5B.2C message.5D.29.E2.80.8E|assert.deepStrictEqual()‎]]</code> لمزيد من المعلومات حول التساوي بالعمق وبشكل صارم.
 +
==<code>util.promisify(original)‎</code>==
 
أضيف في الإصدار: v8.0.0.
 
أضيف في الإصدار: v8.0.0.
* <code>original</code>:‏ [[JavaScript/Function|<Function>]]
+
*<code>original</code>:‏ [[JavaScript/Function|<Function>]]
* القيم المعادة: [[JavaScript/Function|<Function>]]
+
*القيم المعادة: [[JavaScript/Function|<Function>]]
يأخذ هذا التابع دالةً تتبع نمط رد النداء «الخطأ أولًا» (error-first callback)، مثل أن تأخذ رد النداء <code>(err, value) => …‎</code> كآخر وسيط، ثم يعيد النسخة التي تعيد وعودًا (promises) من تلك الدالة.
+
يأخذ هذا التابع دالةً تتبع نمط رد النداء «<nowiki/>[[Node.js/errors#.D8.B1.D8.AF.D9.88.D8.AF .D8.A7.D9.84.D9.86.D8.AF.D8.A7.D8.A1 .C2.AB.D8.A7.D9.84.D8.AE.D8.B7.D8.A3 .D8.A3.D9.88.D9.84.D9.8B.D8.A7.C2.BB .28Error-first callbacks.29|الخطأ أولًا]]» (error-first callback)، مثل أن تأخذ رد النداء <code>(err, value) => …‎</code> كآخر وسيط، ثم يعيد النسخة التي تعيد وعودًا (promises) من تلك الدالة.<syntaxhighlight lang="javascript">const util = require('util');
<syntaxhighlight lang="javascript">const util = require('util');
 
 
const fs = require('fs');
 
const fs = require('fs');
  
سطر 416: سطر 389:
 
   // عالج الخطأ
 
   // عالج الخطأ
 
});
 
});
</syntaxhighlight>
+
</syntaxhighlight>أو يمكن بشكل مكافئ استعمال <code>async function‎</code>:<syntaxhighlight lang="javascript">const util = require('util');
أو يمكن بشكل مكافئ استعمال <code>async function‎</code>:
 
<syntaxhighlight lang="javascript">const util = require('util');
 
 
const fs = require('fs');
 
const fs = require('fs');
  
سطر 427: سطر 398:
 
   console.log(`This directory is owned by ${stats.uid}`);
 
   console.log(`This directory is owned by ${stats.uid}`);
 
}
 
}
</syntaxhighlight>
+
</syntaxhighlight>إن كانت الخاصية <code>original[util.promisify.custom]‎</code> موجودةً، فسيعيد التابع <code>promisify‎</code> قيمتها. اطلع على الفقرة «دوال الوعود المخصصة» في الأسفل. يفترض التابع <code>promisify()‎</code> أنَّ الوسيط <code>original‎</code> هو دالةٌ يمرَّر رد نداءٍ كآخر وسيط إليها في جميع الحالات. إن لم يكن الوسيط <code>original‎</code> دالةً، فسيرمي التابع <code>promisify()‎</code> خطأً. أمَّا إن كان الوسيط <code>original‎</code> دالةً ولكن لم يكن آخر وسيط فيه رد النداء «<nowiki/>[[Node.js/errors#.D8.B1.D8.AF.D9.88.D8.AF .D8.A7.D9.84.D9.86.D8.AF.D8.A7.D8.A1 .C2.AB.D8.A7.D9.84.D8.AE.D8.B7.D8.A3 .D8.A3.D9.88.D9.84.D9.8B.D8.A7.C2.BB .28Error-first callbacks.29|الخطأ أولًا]]»، فإنَّه لا يزال بالإمكان تمرير رد النداء «<nowiki/>[[Node.js/errors#.D8.B1.D8.AF.D9.88.D8.AF .D8.A7.D9.84.D9.86.D8.AF.D8.A7.D8.A1 .C2.AB.D8.A7.D9.84.D8.AE.D8.B7.D8.A3 .D8.A3.D9.88.D9.84.D9.8B.D8.A7.C2.BB .28Error-first callbacks.29|الخطأ أولًا]]» كآخر وسيط لها.
إن كانت الخاصية <code>original[util.promisify.custom]‎</code> موجودةً، فسيعيد التابع <code>promisify‎</code> قيمتها. اطلع على الفقرة «دوال الوعود المخصصة» في الأسفل.
+
===دوال الوعود المخصصة===
يفترض التابع <code>promisify()‎</code> أنَّ الوسيط <code>original‎</code> هو دالةٌ يمرَّر رد نداءٍ كآخر وسيط إليها في جميع الحالات. إن لم يكن الوسيط <code>original‎</code> دالةً، فسيرمي التابع <code>promisify()‎</code> خطأً. أمَّا إن كان الوسيط <code>original‎</code> دالةً ولكن لم يكن آخر وسيط فيه رد النداء «الخطأ أولًا»، فإنَّه لا يزال بالإمكان تمرير رد النداء «الخطأ أولًا» كآخر وسيط لها.
+
استعمال الخاصية <code>util.promisify.custom‎</code> يؤدي إلى استبدال القيمة المعادة للتابع <code>util.promisify()</code>:<syntaxhighlight lang="javascript">const util = require('util');
=== دوال الوعود المخصصة ===
 
استعمال الخاصية <code>util.promisify.custom‎</code> يؤدي إلى استبدال القيمة المعادة للتابع <code>util.promisify()</code>:
 
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
function doSomething(foo, callback) {
 
function doSomething(foo, callback) {
سطر 445: سطر 413:
 
console.log(promisified === doSomething[util.promisify.custom]);
 
console.log(promisified === doSomething[util.promisify.custom]);
 
// 'true' :سيُطبَع
 
// 'true' :سيُطبَع
</syntaxhighlight>
+
</syntaxhighlight>يمكن أن يكون ذلك مفيدٌ في الحالات التي لا تتبع فيها الدالة الأصلية الصيغة القياسية لأخذ رد النداء «<nowiki/>[[Node.js/errors#.D8.B1.D8.AF.D9.88.D8.AF .D8.A7.D9.84.D9.86.D8.AF.D8.A7.D8.A1 .C2.AB.D8.A7.D9.84.D8.AE.D8.B7.D8.A3 .D8.A3.D9.88.D9.84.D9.8B.D8.A7.C2.BB .28Error-first callbacks.29|الخطأ أولًا]]» كآخر وسيط.
يمكن أن يكون ذلك مفيدٌ في الحالات التي لا تتبع فيها الدالة الأصلية الصيغة القياسية لأخذ رد النداء «الخطأ أولًا» كآخر وسيط.
+
 
على سبيل المثال، مع دالة تأخذ الوسائط <code>(foo, onSuccessCallback, onErrorCallback)‎</code>:
+
على سبيل المثال، مع دالة تأخذ الوسائط <code>(foo, onSuccessCallback, onErrorCallback)‎</code>:<syntaxhighlight lang="javascript">doSomething[util.promisify.custom] = (foo) => {
<syntaxhighlight lang="javascript">doSomething[util.promisify.custom] = (foo) => {
 
 
   return new Promise((resolve, reject) => {
 
   return new Promise((resolve, reject) => {
 
     doSomething(foo, resolve, reject);
 
     doSomething(foo, resolve, reject);
 
   });
 
   });
 
};
 
};
</syntaxhighlight>
+
</syntaxhighlight>إن عُرَّفت الخاصية <code>promisify.custom‎</code> ولم تكن دالةً، فسيرمي التابع <code>promisify()‎</code> خطأً.
إن عُرَّفت الخاصية <code>promisify.custom‎</code> ولم تكن دالةً، فسيرمي التابع <code>promisify()‎</code> خطأً.
+
===الخاصية <code>util.promisify.custom‎</code>===
=== الخاصية <code>util.promisify.custom‎</code> ===
 
 
أضيف في الإصدار: v8.0.0.
 
أضيف في الإصدار: v8.0.0.
<symbol>
+
* [[JavaScript/Symbol|<symbol>]]
تمثِّل هذه الخاصية رمزًا (symbol) يمكن استعماله للتصريح عن متغيرات الوعود المخصصة (custom promisified variants) للدوال.
+
تمثِّل هذه الخاصية [[JavaScript/Symbol|رمزًا]] (symbol) يمكن استعماله للتصريح عن متغيرات الوعود المخصصة (custom promisified variants) للدوال.
== الصنف <code>util.TextDecoder‎</code> ==
+
==الصنف <code>util.TextDecoder‎</code>==
 
أضيف في الإصدار: v8.3.0.
 
أضيف في الإصدار: v8.3.0.
يعدُّ هذا الصنف تنفيذًا للواجهة <code>TextDecoder‎</code> البرمجية للترميز القياسي المتوافق مع المعيار WHATWG.
+
 
<syntaxhighlight lang="javascript">const decoder = new TextDecoder('shift_jis');
+
يعدُّ هذا الصنف تنفيذًا للواجهة <code>TextDecoder</code> البرمجية [https://encoding.spec.whatwg.org/ للترميز القياسي المتوافق مع المعيار WHATWG].<syntaxhighlight lang="javascript">const decoder = new TextDecoder('shift_jis');
 
let string = '';
 
let string = '';
 
let buffer;
 
let buffer;
سطر 470: سطر 436:
 
string += decoder.decode(); // نهاية المجرى
 
string += decoder.decode(); // نهاية المجرى
 
</syntaxhighlight>
 
</syntaxhighlight>
=== الترميزات المدعومة المتوافقة مع WHATWG ===
+
===الترميزات المدعومة المتوافقة مع WHATWG===
وفقًا للترميز القياسي المتوافق مع WHATWG، الترميزات المدعومة من قِبَل الواجهة <code>TextDecoder‎</code> البرمجية مدرجةٌ في الجدوال الآتي. قد يُستعمَل اسمٌ بديلٌ واحدٌ أو أكثر لكل ترميز من هذه الترميزات.
+
وفقًا [https://encoding.spec.whatwg.org/ للترميز القياسي المتوافق مع WHATWG]، الترميزات المدعومة من قِبَل الواجهة <code>TextDecoder‎</code> البرمجية مدرجةٌ في الجدوال الآتي. قد يُستعمَل اسمٌ بديلٌ واحدٌ أو أكثر لكل ترميز من هذه الترميزات.
تدعم إعدادات بُنيَات Node.js المختلفة مجموعات مختلفة للترميزات. لمَّا كانت المجموعة الأساسية للترميزات مدعومةً حتى في بنيات Node.js التي تُبنَى دون تفعيل ICU، فإنَّه يتوافر دعمٌ لبعض الترميزات عندما تبنَى Node.js مع تفعيل ICU واستعمال بيانات ICU الكاملة فقط (اطلع على هذه الصفحة لمزيد من المعلومات).
 
==== الترميزات المدعومة دون تفعيل ICU ====
 
 
 
الترميز
 
الأسماء البديلة
 
'utf-8'
 
'Unicode-1-1-utf-8'، و 'utf8'
 
'utf-16le'
 
'utf-16'
 
 
 
==== الترميزات المدعومة بشكل افتراضي (مع تفعيل ICU) ====
 
 
 
 
 
الترميز
 
الأسماء البديلة
 
'utf-8'
 
'unicode-1-1-utf-8', 'utf8'
 
'utf-16le'
 
'utf-16'
 
'utf-16be'
 
  
 +
تدعم إعدادات بُنيَات Node.js المختلفة مجموعات مختلفة للترميزات. لمَّا كانت المجموعة الأساسية للترميزات مدعومةً حتى في بنيات Node.js التي تُبنَى دون تفعيل ICU، فإنَّه يتوافر دعمٌ لبعض الترميزات عندما تبنَى Node.js مع تفعيل ICU واستعمال بيانات ICU الكاملة فقط (اطلع على [https://nodejs.org/dist/latest-v10.x/docs/api/intl.html هذه] الصفحة لمزيد من المعلومات).
 +
====الترميزات المدعومة دون تفعيل ICU====
 +
{| class="wikitable"
 +
!الترميز
 +
!الأسماء البديلة
 +
|-
 +
|<code>'utf-8'</code>
 +
|<code>'Unicode-1-1-utf-8'</code>، و <code>'utf8'</code>
 +
|-
 +
|<code>'utf-16le'</code>
 +
|<code>'utf-16'</code>
 +
|}
  
 +
====الترميزات المدعومة بشكل افتراضي (مع تفعيل ICU)====
 +
{| class="wikitable"
 +
!الترميز
 +
!الأسماء البديلة
 +
|-
 +
|<code>'utf-8'</code>
 +
|<code>'unicode-1-1-utf-8'</code>، و <code>'utf8'</code>
 +
|-
 +
|<code>'utf-16le'</code>
 +
|<code>'utf-16'</code>
 +
|-
 +
|<code>'utf-16be'</code>
 +
|
 +
|}
  
 
==== الترميزات التي تتطلب بيانات ICU الكاملة ====
 
==== الترميزات التي تتطلب بيانات ICU الكاملة ====
 
+
{| class="wikitable"
الترميز
+
!الترميز
الأسماء البديلة
+
!الأسماء البديلة
'ibm866'
+
|-
'866', 'cp866', 'csibm866'
+
|<code>'ibm866'</code>
'iso-8859-2'
+
|<code>'866'</code>، و <code>'cp866'</code>، و <code>'csibm866'</code>
'csisolatin2', 'iso-ir-101', 'iso8859-2', 'iso88592', 'iso_8859-2', 'iso_8859-2:1987', 'l2', 'latin2'
+
|-
'iso-8859-3'
+
|<code>'iso-8859-2'</code>
'csisolatin3', 'iso-ir-109', 'iso8859-3', 'iso88593', 'iso_8859-3', 'iso_8859-3:1988', 'l3', 'latin3'
+
|<code>'csisolatin2'</code>، و <code>'iso-ir-101'</code>، و <code>'iso8859-2'</code>، و <code>'iso88592'</code>، و <code>'iso_8859-2'</code>، و <code>'iso_8859-2:1987'</code>، و <code>'l2'</code>، و <code>'latin2'</code>
'iso-8859-4'
+
|-
'csisolatin4', 'iso-ir-110', 'iso8859-4', 'iso88594', 'iso_8859-4', 'iso_8859-4:1988', 'l4', 'latin4'
+
|<code>'iso-8859-3'</code>
'iso-8859-5'
+
|<code>'csisolatin3'</code>، و <code>'iso-ir-109'</code>، و <code>'iso8859-3'</code>، و <code>'iso88593'</code>، و <code>'iso_8859-3'</code>، و <code>'iso_8859-3:1988'</code>، و <code>'l3'</code>، و <code>'latin3'</code>
'csisolatincyrillic', 'cyrillic', 'iso-ir-144', 'iso8859-5', 'iso88595', 'iso_8859-5', 'iso_8859-5:1988'
+
|-
'iso-8859-6'
+
|<code>'iso-8859-4'</code>
'arabic', 'asmo-708', 'csiso88596e', 'csiso88596i', 'csisolatinarabic', 'ecma-114', 'iso-8859-6-e', 'iso-8859-6-i', 'iso-ir-127', 'iso8859-6', 'iso88596', 'iso_8859-6', 'iso_8859-6:1987'
+
|<code>'csisolatin4'</code>، و <code>'iso-ir-110'</code>، و <code>'iso8859-4'</code>، و <code>'iso88594'</code>، و <code>'iso_8859-4'</code>، و <code>'iso_8859-4:1988'</code>، و <code>'l4'</code>، و <code>'latin4'</code>
'iso-8859-7'
+
|-
'csisolatingreek', 'ecma-118', 'elot_928', 'greek', 'greek8', 'iso-ir-126', 'iso8859-7', 'iso88597', 'iso_8859-7', 'iso_8859-7:1987', 'sun_eu_greek'
+
|<code>'iso-8859-5'</code>
'iso-8859-8'
+
|<code>'csisolatincyrillic'</code>، و <code>'cyrillic'</code>، و <code>'iso-ir-144'</code>، و <code>'iso8859-5'</code>، و <code>'iso88595'</code>، و <code>'iso_8859-5'</code>، و <code>'iso_8859-5:1988'</code>
'csiso88598e', 'csisolatinhebrew', 'hebrew', 'iso-8859-8-e', 'iso-ir-138', 'iso8859-8', 'iso88598', 'iso_8859-8', 'iso_8859-8:1988', 'visual'
+
|-
'iso-8859-8-i'
+
|<code>'iso-8859-6'</code>
'csiso88598i', 'logical'
+
|<code>'arabic'</code>، و <code>'asmo-708'</code>، و <code>'csiso88596e'</code>، و <code>'csiso88596i'</code>، و <code>'csisolatinarabic'</code>، و <code>'ecma-114'</code>، و <code>'iso-8859-6-e'</code>، و <code>'iso-8859-6-i'</code>، و <code>'iso-ir-127'</code>، و <code>'iso8859-6'</code>، و <code>'iso88596'</code>، و <code>'iso_8859-6'</code>، و <code>'iso_8859-6:1987'</code>
'iso-8859-10'
+
|-
'csisolatin6', 'iso-ir-157', 'iso8859-10', 'iso885910', 'l6', 'latin6'
+
|<code>'iso-8859-7'</code>
'iso-8859-13'
+
|<code>'csisolatingreek'</code>، و <code>'ecma-118'</code>، و <code>'elot_928'</code>، و <code>'greek'</code>، و <code>'greek8'</code>، و <code>'iso-ir-126'</code>، و <code>'iso8859-7'</code>، و <code>'iso88597'</code>، و <code>'iso_8859-7</code>'، و <code>'iso_8859-7:1987'</code>، و <code>'sun_eu_greek'</code>
'iso8859-13', 'iso885913'
+
|-
'iso-8859-14'
+
|<code>'iso-8859-8'</code>
'iso8859-14', 'iso885914'
+
|<code>'csiso88598e'</code>، و <code>'csisolatinhebrew'</code>، و <code>'hebrew'</code>، و <code>'iso-8859-8-e'</code>، و <code>'iso-ir-138'</code>، و <code>'iso8859-8'</code>، و <code>'iso88598'</code>، و <code>'iso_8859-8'</code>، و <code>'iso_8859-8:1988'</code>، و <code>'visual'</code>
'iso-8859-15'
+
|-
'csisolatin9', 'iso8859-15', 'iso885915', 'iso_8859-15', 'l9'
+
|<code>'iso-8859-8-i'</code>
'koi8-r'
+
|<code>'csiso88598i'</code>، و <code>'logical'</code>
'cskoi8r', 'koi', 'koi8', 'koi8_r'
+
|-
'koi8-u'
+
|<code>'iso-8859-10'</code>
'koi8-ru'
+
|<code>'csisolatin6'</code>، و <code>'iso-ir-157'</code>، و <code>'iso8859-10'</code>، و <code>'iso885910'</code>، و <code>'l6'</code>، و <code>'latin6'</code>
'macintosh'
+
|-
'csmacintosh', 'mac', 'x-mac-roman'
+
|<code>'iso-8859-13'</code>
'windows-874'
+
|<code>'iso8859-13'</code>، و <code>'iso885913'</code>
'dos-874', 'iso-8859-11', 'iso8859-11', 'iso885911', 'tis-620'
+
|-
'windows-1250'
+
|<code>'iso-8859-14'</code>
'cp1250', 'x-cp1250'
+
|<code>'iso8859-14'</code>، و <code>'iso885914'</code>
'windows-1251'
+
|-
'cp1251', 'x-cp1251'
+
|<code>'iso-8859-15'</code>
'windows-1252'
+
|<code>'csisolatin9'</code>، و <code>'iso8859-15'</code>، و <code>'iso885915'</code>، و <code>'iso_8859-15'</code>، و <code>'l9'</code>
'ansi_x3.4-1968', 'ascii', 'cp1252', 'cp819', 'csisolatin1', 'ibm819', 'iso-8859-1', 'iso-ir-100', 'iso8859-1', 'iso88591', 'iso_8859-1', 'iso_8859-1:1987', 'l1', 'latin1', 'us-ascii', 'x-cp1252'
+
|-
'windows-1253'
+
|<code>'koi8-r'</code>
'cp1253', 'x-cp1253'
+
|<code>'cskoi8r'</code>، و <code>'koi'</code>، و <code>'koi8'</code>، و <code>'koi8_r'</code>
'windows-1254'
+
|-
'cp1254', 'csisolatin5', 'iso-8859-9', 'iso-ir-148', 'iso8859-9', 'iso88599', 'iso_8859-9', 'iso_8859-9:1989', 'l5', 'latin5', 'x-cp1254'
+
|<code>'koi8-u'</code>
'windows-1255'
+
|<code>'koi8-ru'</code>
'cp1255', 'x-cp1255'
+
|-
'windows-1256'
+
|<code>'macintosh'</code>
'cp1256', 'x-cp1256'
+
|<code>'csmacintosh'</code>، و <code>'mac'</code>، و <code>'x-mac-roman'</code>
'windows-1257'
+
|-
'cp1257', 'x-cp1257'
+
|<code>'windows-874'</code>
'windows-1258'
+
|<code>'dos-874'</code>، و <code>'iso-8859-11'</code>، و <code>'iso8859-11'</code>، و <code>'iso885911'</code>، و <code>'tis-620'</code>
'cp1258', 'x-cp1258'
+
|-
'x-mac-cyrillic'
+
|<code>'windows-1250'</code>
'x-mac-ukrainian'
+
|<code>'cp1250'</code>، و <code>'x-cp1250'</code>
'gbk'
+
|-
'chinese', 'csgb2312', 'csiso58gb231280', 'gb2312', 'gb_2312', 'gb_2312-80', 'iso-ir-58', 'x-gbk'
+
|<code>'windows-1251'</code>
'gb18030'
+
|<code>'cp1251'</code>، و <code>'x-cp1251'</code>
 
+
|-
 
+
|<code>'windows-1252'</code>
'big5'
+
|<code>'ansi_x3.4-1968'،</code> و <code>'ascii'</code>، و <code>'cp1252'</code>، و <code>'cp819'</code>، و <code>'csisolatin1'</code>، و <code>'ibm819'</code>، و <code>'iso-8859-1'</code>، و <code>'iso-ir-100'</code>، و <code>'iso8859-1'</code>، و <code>'iso88591'</code>، و 'iso_8859-1'، و <code>'iso_8859-1:1987'</code>، و <code>'l1'</code>، و <code>'latin1'</code>، و <code>'us-ascii'</code>، و <code>'x-cp1252'</code>
'big5-hkscs', 'cn-big5', 'csbig5', 'x-x-big5'
+
|-
'euc-jp'
+
|<code>'windows-1253'</code>
'cseucpkdfmtjapanese', 'x-euc-jp'
+
|<code>'cp1253'</code>، و <code>'x-cp1253'</code>
'iso-2022-jp'
+
|-
'csiso2022jp'
+
|<code>'windows-1254'</code>
'shift_jis'
+
|<code>'cp1254'</code>، و <code>'csisolatin5'</code>، و <code>'iso-8859-9'</code>، و <code>'iso-ir-148'</code>، و <code>'iso8859-9'</code>، و <code>'iso88599'</code>، و <code>'iso_8859-9'</code>، و <code>'iso_8859-9:1989'</code>، و <code>'l5'</code>، و <code>'latin5'</code>، و <code>'x-cp1254'</code>
'csshiftjis', 'ms932', 'ms_kanji', 'shift-jis', 'sjis', 'windows-31j', 'x-sjis'
+
|-
'euc-kr'
+
|<code>'windows-1255'</code>
'cseuckr', 'csksc56011987', 'iso-ir-149', 'korean', 'ks_c_5601-1987', 'ks_c_5601-1989', 'ksc5601', 'ksc_5601', 'windows-949'
+
|<code>'cp1255'</code>، و <code>'x-cp1255'</code>
 
+
|-
الترميز <code>'iso-8859-16'</code> المدرج في الترميز القياسي المتوافق مع WHATWG غير مدعوم.
+
|<code>'windows-1256'</code>
=== <code>new TextDecoder([encoding[, options]])‎</code> ===
+
|<code>'cp1256'</code>، و <code>'x-cp1256'</code>
* <code>encoding</code>:‏ [[JavaScript/String|<string>]] يعرِّف الترميز الذي تدعمه النسخة <code>TextDecoder‎</code>. القيمة الافتراضية هي: <code>'utf-8'</code>.
+
|-
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]  
+
|<code>'windows-1257'</code>
** <code>fatal</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية تكون <code>true‎</code> إذا كان فشل عملية فك الترميز فادحًا وخطيرًا (fatal). هذا الخيار مدعومٌ عندما يكون ICU مفعلًا فقط (اطلع على هذه الصفحة لمزيد من المعلومات). القيمة الافتراضية هي: <code>false‎</code>.
+
|<code>'cp1257'</code>، و <code>'x-cp1257'</code>
** <code>ignoreBOM</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية إن كانت <code>true‎</code>، سيتضمَّن الكائن <code>TextDecoder‎</code> علامة ترتيب البايت (byte order mark) في البيانات الناتجة عن فك الترميز. أمَّا عندما تكون قيمة هذا الخيار <code>false‎</code>، ستُحذَف علامة ترتيب البايت من المخرجات. يستعمَل هذا الخيار عندما يكون الوسيط <code>encoding‎</code> هو إمَّا <code>'utf-8'</code>، أو <code>'utf-16be'</code>، أو <code>'utf-16le'</code>. القيمة الافتراضية هي: <code>false‎</code>.
+
|-
 +
|<code>'windows-1258'</code>
 +
|<code>'cp1258'</code>، و <code>'x-cp1258'</code>
 +
|-
 +
|<code>'x-mac-cyrillic'</code>
 +
|<code>'x-mac-ukrainian'</code>
 +
|-
 +
|<code>'gbk'</code>
 +
|<code>'chinese'</code>، و <code>'csgb2312'</code>، و <code>'csiso58gb231280'</code>، و <code>'gb2312'</code>، و <code>'gb_2312'</code>، و <code>'gb_2312-80'</code>، و <code>'iso-ir-58'</code>، و <code>'x-gbk'</code>
 +
|-
 +
|<code>'gb18030'</code>
 +
|
 +
|-
 +
|<code>'big5'</code>
 +
|<code>'big5-hkscs'</code>، و <code>'cn-big5'</code>، و <code>'csbig5'</code>، و <code>'x-x-big5'</code>
 +
|-
 +
|<code>'euc-jp'</code>
 +
|<code>'cseucpkdfmtjapanese'</code>، و <code>'x-euc-jp'</code>
 +
|-
 +
|<code>'iso-2022-jp'</code>
 +
|<code>'csiso2022jp'</code>
 +
|-
 +
|<code>'shift_jis'</code>
 +
|<code>'csshiftjis'</code>، و <code>'ms932'</code>، و <code>'ms_kanji'</code>، و <code>'shift-jis'</code>، و <code>'sjis'</code>، و <code>'windows-31j'</code>، و <code>'x-sjis'</code>
 +
|-
 +
|<code>'euc-kr'</code>
 +
|<code>'cseuckr'</code>، و <code>'csksc56011987'</code>، و <code>'iso-ir-149'</code>، و <code>'korean'</code>، و <code>'ks_c_5601-1987'</code>، و <code>'ks_c_5601-1989'</code>، و <code>'ksc5601'</code>، و <code>'ksc_5601'</code>، و <code>'windows-949'</code>
 +
|}
 +
الترميز <code>'iso-8859-16'</code> المدرج في [https://encoding.spec.whatwg.org/ الترميز القياسي المتوافق مع WHATWG] غير مدعوم.
 +
===<code>new TextDecoder([encoding[, options]])‎</code>===
 +
*<code>encoding</code>:‏ [[JavaScript/String|<string>]] يعرِّف الترميز الذي تدعمه النسخة <code>TextDecoder‎</code>. القيمة الافتراضية هي: <code>'utf-8'</code>.
 +
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]
 +
**<code>fatal</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية تكون <code>true‎</code> إذا كان فشل عملية فك الترميز فادحًا وخطيرًا (fatal). هذا الخيار مدعومٌ عندما يكون ICU مفعلًا فقط (اطلع على [https://nodejs.org/dist/latest-v10.x/docs/api/intl.html هذه] الصفحة لمزيد من المعلومات). القيمة الافتراضية هي: <code>false‎</code>.
 +
**<code>ignoreBOM</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية إن كانت <code>true‎</code>، سيتضمَّن الكائن <code>TextDecoder‎</code> علامة ترتيب البايت (byte order mark) في البيانات الناتجة عن فك الترميز. أمَّا عندما تكون قيمة هذا الخيار <code>false‎</code>، ستُحذَف علامة ترتيب البايت من المخرجات. يستعمَل هذا الخيار عندما يكون الوسيط <code>encoding‎</code> هو إمَّا <code>'utf-8'</code>، أو <code>'utf-16be'</code>، أو <code>'utf-16le'</code>. القيمة الافتراضية هي: <code>false‎</code>.
 
تنشئ هذه الدالة نسخةً جديدةً من الصنف <code>TextDecoder‎</code>. قد يحدِّد الوسيط <code>encoding‎</code> أحد الترميزات المدعومة أو الأسماء البديلة لها.
 
تنشئ هذه الدالة نسخةً جديدةً من الصنف <code>TextDecoder‎</code>. قد يحدِّد الوسيط <code>encoding‎</code> أحد الترميزات المدعومة أو الأسماء البديلة لها.
 
+
===<code>textDecoder.decode([input[, options]])‎</code>===
=== <code>textDecoder.decode([input[, options]])‎</code> ===
+
*<code>input</code>:‏ [[JavaScript/ArrayBuffer|<ArrayBuffer‎>]] | [[JavaScript/DataView|<DataView>]] | [[JavaScript/TypedArray|<TypedArray>]] نسخةٌ من <code>ArrayBuffer‎</code>، أو <code>DataView‎</code>، أو <code>TypedArray‎</code> تحوي البيانات المرمَّزة.
* <code>input</code>:‏ [[JavaScript/ArrayBuffer‎|<ArrayBuffer‎>]] | [[JavaScript/DataView|<DataView>]] | [[JavaScript/TypedArray|<TypedArray>]] نسخةٌ من <code>ArrayBuffer‎</code>، أو <code>DataView‎</code>، أو <code>TypedArray‎</code> تحوي البيانات المرمَّزة.
+
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]  
+
**<code>stream</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية تكون <code>true‎</code> إن كان يتوقع وجود أجزاء إضافية من البيانات. القيمة الافتراضية هي: <code>false‎</code>.
** <code>stream</code>:‏ [[JavaScript/Boolean|<boolean>]] قيمة منطقية تكون <code>true‎</code> إن كان يتوقع وجود أجزاء إضافية من البيانات. القيمة الافتراضية هي: <code>false‎</code>.  
+
*القيم المعادة: [[JavaScript/String|<string>]]
* القيم المعادة: [[JavaScript/String|<string>]]
+
يفك هذا التابع البيانات المعطاة في الترميز <code>input‎</code> ثمَّ يعيدها في سلسلة نصية. إن كانت قيمة الخيار <code>options.stream‎</code> هي <code>true‎</code>، فستُخزَّن أية سلسلة غير مكتملة من البايتات توجد في نهاية المدخلات <code>input‎</code> داخليًّا ثم تُصدَر بعد الاستدعاء التالي للتابع <code>textDecoder.decode()‎</code>. إن كانت قيمة الخيار <code>textDecoder.fatal‎</code> هي <code>true‎</code>، فسيؤدي حصول أي خطأ أثناء عملية فك الترميز إلى رمي الخطأ <code>TypeError‎</code>.
يفك هذا التابع البيانات المعطاة في الترميز <code>input‎</code> ثمَّ يعيدها في سلسلة نصية. إن كانت قيمة الخيار <code>options.stream‎</code> هي <code>true‎</code>، فستُخزَّن أية سلسلة غير مكتملة من البايتات توجد في نهاية المدخلات <code>input‎</code> داخليًّا ثم تُصدَر بعد الاستدعاء التالي للتابع <code>textDecoder.decode()‎</code>.
+
===<code>‎textDecoder.encoding</code>===
إن كانت قيمة الخيار <code>textDecoder.fatal‎</code> هي <code>true‎</code>، فسيؤدي حصول أي خطأ أثناء عملية فك الترميز إلى رمي الخطأ <code>TypeError‎</code>.
+
*[[JavaScript/String|<string>]]
=== <code>‎textDecoder.encoding</code> ===
 
* [[JavaScript/String|<string>]]
 
 
تمثِّل هذه الخاصية الترميز الذي تدعمه النسخة <code>TextDecoder‎</code>.
 
تمثِّل هذه الخاصية الترميز الذي تدعمه النسخة <code>TextDecoder‎</code>.
=== <code>‎textDecoder.fatal</code> ===
+
===<code>‎textDecoder.fatal</code>===
* [[JavaScript/Boolean|<boolean>]]
+
*[[JavaScript/Boolean|<boolean>]]
 
ستكون قيمة هذه الخاصية <code>true‎</code> إن تمَّ رمي الخطأ <code>TypeError‎</code> الناتج عن حصول أخطاء فادحة أثناء عملية فك الترميز.
 
ستكون قيمة هذه الخاصية <code>true‎</code> إن تمَّ رمي الخطأ <code>TypeError‎</code> الناتج عن حصول أخطاء فادحة أثناء عملية فك الترميز.
=== <code>‎textDecoder.ignoreBOM</code> ===
+
===<code>‎textDecoder.ignoreBOM</code>===
* [[JavaScript/Boolean|<boolean>]]
+
*[[JavaScript/Boolean|<boolean>]]
 
ستكون قيمة هذه الخاصية هي <code>true‎</code> إن كان ناتج عملية فك الترميز سيتضمَّن علامة ترتيب البايت (byte order mark).
 
ستكون قيمة هذه الخاصية هي <code>true‎</code> إن كان ناتج عملية فك الترميز سيتضمَّن علامة ترتيب البايت (byte order mark).
== الصنف <code>util.TextEncoder‎</code> ==
+
==الصنف <code>util.TextEncoder</code>==
 
أضيف في الإصدار: v8.3.0.
 
أضيف في الإصدار: v8.3.0.
يعدُّ هذا الصنف تنفيذًا للواجهة <code>TextEncoder</code> البرمجية للترميز القياسي المتوافق مع المعيار WHATWG.
+
 
<syntaxhighlight lang="javascript">const encoder = new TextEncoder();
+
يعدُّ هذا الصنف تنفيذًا للواجهة <code>TextEncoder</code> البرمجية [https://encoding.spec.whatwg.org/ للترميز القياسي المتوافق مع المعيار WHATWG].<syntaxhighlight lang="javascript">const encoder = new TextEncoder();
 
const uint8array = encoder.encode('this is some data');
 
const uint8array = encoder.encode('this is some data');
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
===<code>textEncoder.encode([input])‎</code>===
=== <code>textEncoder.encode([input])‎</code> ===
+
*<code>input‎</code>:‏ النص المراد ترميزه. القيمة الافتراضية هي: سلسلة نصية فارغة.
* <code>input‎</code>:‏ النص المراد ترميزه. القيمة الافتراضية هي: سلسلة نصية فارغة.
+
*القيم المعادة: [[JavaScript/Uint8Array|<Uint8Array>]]
* القيم المعادة: <Uint8Array>
 
 
يرمِّز هذا التابع البيانات المعطاة في الوسيط <code>input‎</code> بالترميز UTF-8 ثم يعيد كائنًا من النوع <code>Uint8Array‎</code> يحوي البايتات المرمَّزة.
 
يرمِّز هذا التابع البيانات المعطاة في الوسيط <code>input‎</code> بالترميز UTF-8 ثم يعيد كائنًا من النوع <code>Uint8Array‎</code> يحوي البايتات المرمَّزة.
=== <code>textEncoder.encoding‎</code> ===
+
===<code>textEncoder.encoding‎</code>===
* [[JavaScript/String|<string>]]
+
*[[JavaScript/String|<string>]]
تمثِّل هذه الخاصية الترميز الذي تدعمه النسخة <code>TextEncoder</code>. تُضبَط إلى القيمة <code>'utf-8'</code>.
+
تمثِّل هذه الخاصية الترميز الذي تدعمه النسخة <code>TextEncoder</code>. تُضبَط إلى القيمة <code>'utf-8'</code>.
== <code>util.types‎</code> ==
+
==<code>util.types‎</code>==
أضيف في الإصدار: v10.0.0.
+
أضيف في الإصدار: v10.0.0. يوفِّر <code>util.types‎</code> عددًا من تحققات الأنواع (type checks) لمختلف أنواع الكائنات المضمَّنة (built-in objects) في اللغة. لا تفحص هذه التحققات، بشكل مخالف للمعامل <code>[[JavaScript/instanceof|instanceof‎]]</code> أو <code>[[JavaScript/Object/prototype|Object.prototype.toString.call(value)‎]]</code>، خاصيات الكائن القابلة للوصول من طرف JavaScript (مثل فحص الخاصية <code>prototype‎</code>)، بل تجري عادةً استدعاءات زائدة داخل ++C. عمومًا، لا يقدِّم الناتج أي ضمانات عن ماهية نوع الخاصيات أو السلوك المتوقع لقيمةٍ ما في JavaScript. أكثر من يستفيد من هذه التحقُّقات هم مطورو الإضافات الذين يفضلون إجراء التحقق من النوع في JavaScript.
يوفِّر <code>util.types‎</code> عددًا من تحققات الأنواع (type checks) لمختلف أنواع الكائنات المضمَّنة (built-in objects) في اللغة. لا تفحص هذه التحققات، بشكل مخالف للمعامل <code>instanceof‎</code> أو <code>Object.prototype.toString.call(value)‎</code>، خاصيات الكائن القابلة للوصول من طرف JavaScript (مثل فحص الخاصية <code>prototype‎</code>)، بل تجري عادةً استدعاءات زائدة داخل ++C.
+
===<code>util.types.isArgumentsObject(value)‎</code>===
عمومًا، لا يقدِّم الناتج أي ضمانات عن ماهية نوع الخاصيات أو السلوك المتوقع لقيمةٍ ما في JavaScript. أكثر من يستفيد من هذه التحقُّقات هم مطورو الإضافات الذين يفضلون إجراء التحقق من النوع في JavaScript.
 
=== <code>util.types.isArgumentsObject(value)‎</code> ===
 
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>arguments‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>arguments‎</code>.<syntaxhighlight lang="javascript">function foo() {
<syntaxhighlight lang="javascript">function foo() {
 
 
   util.types.isArgumentsObject(arguments);  // Returns true
 
   util.types.isArgumentsObject(arguments);  // Returns true
 
}
 
}
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isArrayBuffer(value)‎</code> ===
+
===<code>util.types.isArrayBuffer(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>ArrayBuffer‎</code>. هذا لا يتضمن النسخ <code>SharedArrayBuffer‎</code>. يفضَّل عادةً فحص كلاهما. انظر إلى الدالة <code>util.types.isAnyArrayBuffer()‎</code> من أجل ذلك.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>ArrayBuffer‎</code>. هذا لا يتضمن النسخ <code>SharedArrayBuffer‎</code>. يفضَّل عادةً فحص كلاهما. انظر إلى الدالة <code>util.types.isAnyArrayBuffer()‎</code> من أجل ذلك.<syntaxhighlight lang="javascript">util.types.isArrayBuffer(new ArrayBuffer());  // true
<syntaxhighlight lang="javascript">util.types.isArrayBuffer(new ArrayBuffer());  // true
 
 
util.types.isArrayBuffer(new SharedArrayBuffer());  // false
 
util.types.isArrayBuffer(new SharedArrayBuffer());  // false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>>util.types.isAsyncFunction‎</code> ===
+
===<code>util.types.isAsyncFunction(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> دالةً غير متزامنةً (async function). انتبه إلى أنَّ ناتج هذا التابع يعكس ما يراه محرِّك JavaScript؛ على وجه التحديد، قد لا تطابق القيمة المعادة  الشيفرة المصدرية الأصلية إن استُعملَت الأداة transpilation.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> [[JavaScript/async function|دالةً غير متزامنةً]] (async function). انتبه إلى أنَّ ناتج هذا التابع يعكس ما يراه محرِّك JavaScript؛ على وجه التحديد، قد لا تطابق القيمة المعادة  الشيفرة المصدرية الأصلية إن استُعملَت الأداة transpilation.<syntaxhighlight lang="javascript">util.types.isAsyncFunction(function foo() {});  // false
<syntaxhighlight lang="javascript">util.types.isAsyncFunction(function foo() {});  // false
 
 
util.types.isAsyncFunction(async function foo() {});  // true
 
util.types.isAsyncFunction(async function foo() {});  // true
 
+
</syntaxhighlight>
=== <code>util.types.isBigInt64Array(value)‎</code> ===
+
===<code>util.types.isBigInt64Array(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً من النوع <code>BigInt64Array‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً من النوع <code>BigInt64Array‎</code>.<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">util.types.isBigInt64Array(new BigInt64Array());   // true
+
util.types.isBigInt64Array(new BigInt64Array()); // true util.types.isBigInt64Array(new BigUint64Array()); // false
util.types.isBigInt64Array(new BigUint64Array()); // false
+
</syntaxhighlight>
</syntaxhighlight>  
+
===<code>util.types.isBigUint64Array(value)‎</code>===
=== <code>util.types.isBigUint64Array(value)‎</code> ===
 
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً من النوع <code>BigUint64Array‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً من النوع <code>BigUint64Array‎</code>.<syntaxhighlight lang="javascript">util.types.isBigUint64Array(new BigInt64Array());  // false
<syntaxhighlight lang="javascript">util.types.isBigUint64Array(new BigInt64Array());  // false
 
 
util.types.isBigUint64Array(new BigUint64Array());  // true
 
util.types.isBigUint64Array(new BigUint64Array());  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isBooleanObject(value)‎</code> ===
+
===<code>util.types.isBooleanObject(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>boolean‎</code> (أنشئ عبر <code>new Boolean()‎</code>).
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>boolean‎</code> (أنشئ عبر <code>new [[JavaScript/Boolean|Boolean]]()‎</code>).<syntaxhighlight lang="javascript">util.types.isBooleanObject(false);  // Returns false
<syntaxhighlight lang="javascript">util.types.isBooleanObject(false);  // Returns false
 
 
util.types.isBooleanObject(true);  // false
 
util.types.isBooleanObject(true);  // false
 
util.types.isBooleanObject(new Boolean(false)); // true
 
util.types.isBooleanObject(new Boolean(false)); // true
سطر 663: سطر 657:
 
util.types.isBooleanObject(Boolean(false)); // false
 
util.types.isBooleanObject(Boolean(false)); // false
 
util.types.isBooleanObject(Boolean(true));  // false
 
util.types.isBooleanObject(Boolean(true));  // false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isBoxedPrimitive(value)‎</code> ===
+
===<code>util.types.isBoxedPrimitive(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> أيًّا من الكائنات الأساسية المغلفة (boxed primitive object)، مثل تلك التي أنشأت باستعمال <code>new Boolean()‎</code>، أو <code>new String()‎</code>، أو <code>Object(Symbol())‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> أيًّا من الكائنات الأساسية المغلفة (boxed primitive object)، مثل تلك التي أنشأت باستعمال <code>new Boolean()‎</code>، أو <code>new String()‎</code>، أو <code>Object(Symbol())‎</code>. تفحَّص المثال التالي:<syntaxhighlight lang="javascript">util.types.isBoxedPrimitive(false); // false
تفحَّص المثال التالي:
 
<syntaxhighlight lang="javascript">util.types.isBoxedPrimitive(false); // false
 
 
util.types.isBoxedPrimitive(new Boolean(false)); // true
 
util.types.isBoxedPrimitive(new Boolean(false)); // true
 
util.types.isBoxedPrimitive(Symbol('foo')); // false
 
util.types.isBoxedPrimitive(Symbol('foo')); // false
 
util.types.isBoxedPrimitive(Object(Symbol('foo'))); // true
 
util.types.isBoxedPrimitive(Object(Symbol('foo'))); // true
 
util.types.isBoxedPrimitive(Object(BigInt(5))); // true
 
util.types.isBoxedPrimitive(Object(BigInt(5))); // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isDataView(value)‎</code> ===
+
===<code>util.types.isDataView(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>DataView‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>DataView‎</code>.<syntaxhighlight lang="javascript">const ab = new ArrayBuffer(20);
<syntaxhighlight lang="javascript">const ab = new ArrayBuffer(20);
 
 
util.types.isDataView(new DataView(ab));  // true
 
util.types.isDataView(new DataView(ab));  // true
 
util.types.isDataView(new Float64Array());  // false
 
util.types.isDataView(new Float64Array());  // false
</syntaxhighlight>  
+
</syntaxhighlight>انظر أيضًا التابع <code>ArrayBuffer.isView()‎</code>.
انظر أيضًا التابع <code>ArrayBuffer.isView()‎</code>.
+
===<code>util.types.isDate(value)‎</code>===
=== <code>util.types.isDate(value)‎</code> ===
 
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنة من الصنف <code>date‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنة من الصنف <code>[[JavaScript/Date|date‎]]</code>.<syntaxhighlight lang="javascript">util.types.isDate(new Date());  // true
<syntaxhighlight lang="javascript">util.types.isDate(new Date());  // true
+
</syntaxhighlight>
</syntaxhighlight>  
+
===<code>util.types.isExternal(value)‎</code>===
=== <code>util.types.isExternal(value)‎</code> ===
 
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
 
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> قيمةً أساسيَّةً من النوع <code>External‎</code>.
 
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> قيمةً أساسيَّةً من النوع <code>External‎</code>.
=== <code>util.types.isFloat32Array(value)‎</code> ===
+
===<code>util.types.isFloat32Array(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنة من الصنف <code>Float32Array‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنة من الصنف <code>Float32Array‎</code>.<syntaxhighlight lang="javascript">util.types.isFloat32Array(new ArrayBuffer());  // false
<syntaxhighlight lang="javascript">util.types.isFloat32Array(new ArrayBuffer());  // false
 
 
util.types.isFloat32Array(new Float32Array());  // true
 
util.types.isFloat32Array(new Float32Array());  // true
 
util.types.isFloat32Array(new Float64Array());  // false
 
util.types.isFloat32Array(new Float64Array());  // false
</syntaxhighlight>  
+
</syntaxhighlight>
 
+
===<code>util.types.isFloat64Array(value)‎</code>===
=== <code>util.types.isFloat64Array(value)‎</code> ===
 
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Float64Array‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Float64Array‎</code>.<syntaxhighlight lang="javascript">util.types.isFloat64Array(new ArrayBuffer());  // false
<syntaxhighlight lang="javascript">util.types.isFloat64Array(new ArrayBuffer());  // false
 
 
util.types.isFloat64Array(new Uint8Array());  // false
 
util.types.isFloat64Array(new Uint8Array());  // false
 
util.types.isFloat64Array(new Float64Array());  // true
 
util.types.isFloat64Array(new Float64Array());  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isGeneratorFunction(value)‎</code> ===
+
===<code>util.types.isGeneratorFunction(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> دالةً مولدةً (generator function). انتبه إلى أنَّ ناتج هذا التابع يعكس ما يراه محرِّك JavaScript. على وجهة التحديد، قد لا تطابق القيمة المعادة  الشيفرة المصدرية الأصلية إن استُعملَت الأداة transpilation.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> [[JavaScript/function*|دالةً مولدةً]] (generator function). انتبه إلى أنَّ ناتج هذا التابع يعكس ما يراه محرِّك JavaScript. على وجهة التحديد، قد لا تطابق القيمة المعادة  الشيفرة المصدرية الأصلية إن استُعملَت الأداة transpilation.<syntaxhighlight lang="javascript">util.types.isGeneratorFunction(function foo() {});  // false
<syntaxhighlight lang="javascript">util.types.isGeneratorFunction(function foo() {});  // false
 
 
util.types.isGeneratorFunction(function* foo() {});  // true
 
util.types.isGeneratorFunction(function* foo() {});  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>‎util.types.isGeneratorObject(value)</code> ===
+
===<code>‎util.types.isGeneratorObject(value)</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا مولدًا (generator object) كما أعيد من دالة مولِّدة مضمَّنة. انتبه إلى أنَّ ناتج هذا التابع يعكس ما يراه محرِّك JavaScript. على وجهة التحديد، قد لا تطابق القيمة المعادة الشيفرة المصدرية الأصلية إن استُعملَت الأداة transpilation.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا مولدًا (generator object) أعيد من [[JavaScript/function*|دالة مولِّدة]] مضمَّنة. انتبه إلى أنَّ ناتج هذا التابع يعكس ما يراه محرِّك JavaScript. على وجهة التحديد، قد لا تطابق القيمة المعادة الشيفرة المصدرية الأصلية إن استُعملَت الأداة transpilation.<syntaxhighlight lang="javascript">function* foo() {}
<syntaxhighlight lang="javascript">function* foo() {}
 
 
const generator = foo();
 
const generator = foo();
 
util.types.isGeneratorObject(generator);  // true
 
util.types.isGeneratorObject(generator);  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isInt8Array(value)‎</code> ===
+
===<code>util.types.isInt8Array(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Int8Array‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Int8Array‎</code>.<syntaxhighlight lang="javascript">util.types.isInt8Array(new ArrayBuffer());  // false
<syntaxhighlight lang="javascript">util.types.isInt8Array(new ArrayBuffer());  // false
 
 
util.types.isInt8Array(new Int8Array());  // true
 
util.types.isInt8Array(new Int8Array());  // true
 
util.types.isInt8Array(new Float64Array());  // false
 
util.types.isInt8Array(new Float64Array());  // false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>‎util.types.isInt16Array(value)</code> ===
+
===<code>‎util.types.isInt16Array(value)</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Int16Array‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Int16Array‎</code>.<syntaxhighlight lang="javascript">util.types.isInt16Array(new ArrayBuffer());  // Returns false
<syntaxhighlight lang="javascript">util.types.isInt16Array(new ArrayBuffer());  // Returns false
 
 
util.types.isInt16Array(new Int16Array());  // Returns true
 
util.types.isInt16Array(new Int16Array());  // Returns true
 
util.types.isInt16Array(new Float64Array());  // Returns false
 
util.types.isInt16Array(new Float64Array());  // Returns false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isInt32Array(value)‎</code> ===
+
===<code>util.types.isInt32Array(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Int32Array‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Int32Array‎</code>.<syntaxhighlight lang="javascript">util.types.isInt32Array(new ArrayBuffer());  // false
<syntaxhighlight lang="javascript">util.types.isInt32Array(new ArrayBuffer());  // false
 
 
util.types.isInt32Array(new Int32Array());  // true
 
util.types.isInt32Array(new Int32Array());  // true
 
util.types.isInt32Array(new Float64Array());  // false
 
util.types.isInt32Array(new Float64Array());  // false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isMap(value)‎</code> ===
+
===<code>util.types.isMap(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Map‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Map‎</code>.<syntaxhighlight lang="javascript">util.types.isMap(new Map());  // true</syntaxhighlight>
<syntaxhighlight lang="javascript">util.types.isMap(new Map());  // true</syntaxhighlight>
+
===<code>‎util.types.isMapIterator(value)</code>===
=== <code>‎util.types.isMapIterator(value)</code> ===
 
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> مكرِّرًا (iterator) أعيد من نسخةٍ مضمَّنةٍ من الكائن <code>Map‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> مكرِّرًا (iterator) أعيد من نسخةٍ مضمَّنةٍ من الكائن <code>Map‎</code>.<syntaxhighlight lang="javascript">const map = new Map();
<syntaxhighlight lang="javascript">const map = new Map();
 
 
util.types.isMapIterator(map.keys());  // true
 
util.types.isMapIterator(map.keys());  // true
 
util.types.isMapIterator(map.values());  // true
 
util.types.isMapIterator(map.values());  // true
 
util.types.isMapIterator(map.entries());  // true
 
util.types.isMapIterator(map.entries());  // true
 
util.types.isMapIterator(map[Symbol.iterator]());  // true
 
util.types.isMapIterator(map[Symbol.iterator]());  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isModuleNamespaceObject(value)‎</code> ===
+
===<code>util.types.isModuleNamespaceObject(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً من كائن وحدة مجال الأسماء (Module Namespace).
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً من [https://tc39.github.io/ecma262/#sec-module-namespace-exotic-objects كائن وحدة مجال الأسماء] (Module Namespace).<syntaxhighlight lang="javascript">import * as ns from './a.js';
<syntaxhighlight lang="javascript">import * as ns from './a.js';
 
  
 
util.types.isModuleNamespaceObject(ns);  // true
 
util.types.isModuleNamespaceObject(ns);  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isNativeError(value)‎</code> ===
+
===<code>util.types.isNativeError(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Error‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>[[Node.js/errors#.D8.A7.D9.84.D8.B5.D9.86.D9.81 Error.E2.80.8E|Error‎]]</code>.<syntaxhighlight lang="javascript">util.types.isNativeError(new Error());  // true
<syntaxhighlight lang="javascript">util.types.isNativeError(new Error());  // true
 
 
util.types.isNativeError(new TypeError());  // true
 
util.types.isNativeError(new TypeError());  // true
 
util.types.isNativeError(new RangeError());  // true
 
util.types.isNativeError(new RangeError());  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isNumberObject(value)‎</code> ===
+
===<code>util.types.isNumberObject(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>Number‎</code> (أنشيء باستعمال <code>new Number()‎</code>).
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>[[JavaScript/Number|Number‎]]</code> (أنشيء باستعمال <code>new Number()‎</code>).<syntaxhighlight lang="javascript">util.types.isNumberObject(0);  // false
<syntaxhighlight lang="javascript">util.types.isNumberObject(0);  // false
 
 
util.types.isNumberObject(new Number(0));  // true
 
util.types.isNumberObject(new Number(0));  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isPromise(value)‎</code> ===
+
===<code>util.types.isPromise(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>Promise‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>Promise‎</code>.<syntaxhighlight lang="javascript">util.types.isPromise(Promise.resolve(42));  // true
<syntaxhighlight lang="javascript">util.types.isPromise(Promise.resolve(42));  // true
+
</syntaxhighlight>
</syntaxhighlight>  
+
===<code>util.types.isProxy(value)‎</code>===
=== <code>util.types.isProxy(value)‎</code> ===
 
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً من الصنف <code>Proxy‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً من الصنف <code>Proxy‎</code>.<syntaxhighlight lang="javascript">const target = {};
<syntaxhighlight lang="javascript">const target = {};
 
 
const proxy = new Proxy(target, {});
 
const proxy = new Proxy(target, {});
 
util.types.isProxy(target);  // false
 
util.types.isProxy(target);  // false
 
util.types.isProxy(proxy);  // true
 
util.types.isProxy(proxy);  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>‎util.types.isRegExp(value)</code> ===
+
===<code>‎util.types.isRegExp(value)</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>RegExp‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>[[JavaScript/RegExp|RegExp‎]]</code>.<syntaxhighlight lang="javascript">util.types.isRegExp(/abc/);  // true
<syntaxhighlight lang="javascript">util.types.isRegExp(/abc/);  // true
 
 
util.types.isRegExp(new RegExp('abc'));  // true
 
util.types.isRegExp(new RegExp('abc'));  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isSet(value)‎</code> ===
+
===<code>util.types.isSet(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Set‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>Set‎</code>.<syntaxhighlight lang="javascript">util.types.isSet(new Set());  // true
<syntaxhighlight lang="javascript">util.types.isSet(new Set());  // true
+
</syntaxhighlight>
</syntaxhighlight>  
+
===<code>util.types.isSetIterator(value)‎</code>===
=== <code>util.types.isSetIterator(value)‎</code> ===
 
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> مكرِّرًا أعيد من النسخة <code>Set‎</code> المضمَّنة.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> مكرِّرًا أعيد من النسخة <code>Set‎</code> المضمَّنة.<syntaxhighlight lang="javascript">const set = new Set();
<syntaxhighlight lang="javascript">const set = new Set();
 
 
util.types.isSetIterator(set.keys());  // true
 
util.types.isSetIterator(set.keys());  // true
 
util.types.isSetIterator(set.values());  // true
 
util.types.isSetIterator(set.values());  // true
 
util.types.isSetIterator(set.entries());  // true
 
util.types.isSetIterator(set.entries());  // true
 
util.types.isSetIterator(set[Symbol.iterator]());  // true
 
util.types.isSetIterator(set[Symbol.iterator]());  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isSharedArrayBuffer(value)‎</code> ===
+
===<code>util.types.isSharedArrayBuffer(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>SharedArrayBuffer‎</code>. هذا لا يتضمَّن النُسَخ <code>ArrayBuffer‎</code>، لذا يفضَّل عادةً التحقق من كلاهما. اطلع على توثيق التابع <code>util.types.isAnyArrayBuffer()‎</code> من أجل ذلك.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من الصنف <code>SharedArrayBuffer‎</code>. هذا لا يتضمَّن النُسَخ <code>ArrayBuffer‎</code>، لذا يفضَّل عادةً التحقق من كلاهما. اطلع على توثيق التابع <code>util.types.isAnyArrayBuffer()‎</code> من أجل ذلك.<syntaxhighlight lang="javascript">util.types.isSharedArrayBuffer(new ArrayBuffer());  // false
<syntaxhighlight lang="javascript">util.types.isSharedArrayBuffer(new ArrayBuffer());  // false
 
 
util.types.isSharedArrayBuffer(new SharedArrayBuffer());  // true
 
util.types.isSharedArrayBuffer(new SharedArrayBuffer());  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isStringObject(value)‎</code> ===
+
===<code>util.types.isStringObject(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>string‎</code> (أنشئ مثلًا عبر <code>new String()‎</code>).
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>[[JavaScript/String|string‎]]</code> (أنشئ مثلًا عبر <code>[[JavaScript/String|new String()]]‎</code>).<syntaxhighlight lang="javascript">util.types.isStringObject('foo');  // false
<syntaxhighlight lang="javascript">util.types.isStringObject('foo');  // false
 
 
util.types.isStringObject(new String('foo'));  // true
 
util.types.isStringObject(new String('foo'));  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>‎util.types.isSymbolObject(value)</code> ===
+
===<code>‎util.types.isSymbolObject(value)</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>Symbol‎</code> أُنشِيء عبر استدعاء <code>Object()‎</code> مع الكائن <code>Symbol‎</code> الأساسي.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> كائنًا من النوع <code>[[JavaScript/Symbol|Symbol‎]]</code> أُنشِيء عبر استدعاء <code>[[JavaScript/Object|Object]]()‎</code> مع الكائن <code>[[JavaScript/Symbol|Symbol‎]]</code> الأساسي.<syntaxhighlight lang="javascript">const symbol = Symbol('foo');
<syntaxhighlight lang="javascript">const symbol = Symbol('foo');
 
 
util.types.isSymbolObject(symbol);  // false
 
util.types.isSymbolObject(symbol);  // false
 
util.types.isSymbolObject(Object(symbol));  // true
 
util.types.isSymbolObject(Object(symbol));  // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>‎util.types.isTypedArray(value)</code> ===
+
===<code>‎util.types.isTypedArray(value)</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>TypedArray‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>TypedArray‎</code>.<syntaxhighlight lang="javascript">util.types.isTypedArray(new ArrayBuffer());  // false
<syntaxhighlight lang="javascript">util.types.isTypedArray(new ArrayBuffer());  // false
 
 
util.types.isTypedArray(new Uint8Array());  // true
 
util.types.isTypedArray(new Uint8Array());  // true
 
util.types.isTypedArray(new Float64Array());  // true
 
util.types.isTypedArray(new Float64Array());  // true
</syntaxhighlight>  
+
</syntaxhighlight>انظر أيضًا التابع <code>ArrayBuffer.isView()‎</code>.
انظر أيضًا التابع <code>ArrayBuffer.isView()‎</code>.
+
===<code>util.types.isUint8Array(value)‎</code>===
=== <code>util.types.isUint8Array(value)‎</code> ===
 
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>Uint8Array‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>Uint8Array‎</code>.<syntaxhighlight lang="javascript">util.types.isUint8Array(new ArrayBuffer());  // false
<syntaxhighlight lang="javascript">util.types.isUint8Array(new ArrayBuffer());  // false
 
 
util.types.isUint8Array(new Uint8Array());  // true
 
util.types.isUint8Array(new Uint8Array());  // true
 
util.types.isUint8Array(new Float64Array());  // false
 
util.types.isUint8Array(new Float64Array());  // false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>‎util.types.isUint8ClampedArray(value)</code> ===
+
===<code>‎util.types.isUint8ClampedArray(value)</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>Uint8ClampedArray</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>Uint8ClampedArray</code>.<syntaxhighlight lang="javascript">util.types.isUint8ClampedArray(new ArrayBuffer());  // false
<syntaxhighlight lang="javascript">util.types.isUint8ClampedArray(new ArrayBuffer());  // false
 
 
util.types.isUint8ClampedArray(new Uint8ClampedArray());  // true
 
util.types.isUint8ClampedArray(new Uint8ClampedArray());  // true
 
util.types.isUint8ClampedArray(new Float64Array());  // false
 
util.types.isUint8ClampedArray(new Float64Array());  // false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.types.isUint16Array(value)‎</code> ===
+
===<code>util.types.isUint16Array(value)‎</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>Uint16Array</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>Uint16Array</code>.<syntaxhighlight lang="javascript">util.types.isUint16Array(new ArrayBuffer());  // false
<syntaxhighlight lang="javascript">util.types.isUint16Array(new ArrayBuffer());  // false
 
 
util.types.isUint16Array(new Uint16Array());  // true
 
util.types.isUint16Array(new Uint16Array());  // true
 
util.types.isUint16Array(new Float64Array());  // false
 
util.types.isUint16Array(new Float64Array());  // false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>‎util.types.isUint32Array(value)</code> ===
+
===<code>‎util.types.isUint32Array(value)</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>Uint32Array</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>Uint32Array</code>.<syntaxhighlight lang="javascript">util.types.isUint32Array(new ArrayBuffer());  // false
<syntaxhighlight lang="javascript">util.types.isUint32Array(new ArrayBuffer());  // false
 
 
util.types.isUint32Array(new Uint32Array());  // true
 
util.types.isUint32Array(new Uint32Array());  // true
 
util.types.isUint32Array(new Float64Array());  // false
 
util.types.isUint32Array(new Float64Array());  // false
 
</syntaxhighlight>
 
</syntaxhighlight>
=== <code>‎util.types.isWeakMap(value)</code> ===
+
===<code>‎util.types.isWeakMap(value)</code>===
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>WeakMap</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>WeakMap</code>.<syntaxhighlight lang="javascript">util.types.isWeakMap(new WeakMap());  // true
<syntaxhighlight lang="javascript">util.types.isWeakMap(new WeakMap());  // true
+
</syntaxhighlight>
</syntaxhighlight>  
+
===<code>util.types.isWeakSet(value)‎</code>===
=== <code>util.types.isWeakSet(value)‎</code> ===
 
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>WeakSet</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>WeakSet</code>.<syntaxhighlight lang="javascript">util.types.isWeakSet(new WeakSet());  // true
<syntaxhighlight lang="javascript">util.types.isWeakSet(new WeakSet());  // true
+
</syntaxhighlight>
</syntaxhighlight>  
+
===<code>util.types.isWebAssemblyCompiledModule(value)‎</code>===
=== <code>util.types.isWebAssemblyCompiledModule(value)‎</code> ===
 
 
أضيف في الإصدار: v10.0.0.
 
أضيف في الإصدار: v10.0.0.
* <code>value‎</code>:‏ <any>
+
*<code>value‎</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>WebAssembly.Module‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كانت القيمة <code>value‎</code> نسخةً مضمَّنةً من النوع <code>WebAssembly.Module‎</code>.<syntaxhighlight lang="javascript">const module = new WebAssembly.Module(wasmBuffer);
<syntaxhighlight lang="javascript">const module = new WebAssembly.Module(wasmBuffer);
 
 
util.types.isWebAssemblyCompiledModule(module);  // Returns true
 
util.types.isWebAssemblyCompiledModule(module);  // Returns true
</syntaxhighlight>  
+
</syntaxhighlight>
== الواجهات البرمجية المهملة ==
+
==الواجهات البرمجية المهملة==
 
أصبحت الواجهات البرمجية التالية مهملةً ولا يجب استخدامها مطلقًا بعد الآن. يجب على التطبيقات والوحدات التي تستعمل إحداها أن تستعيض عنها بالبديل المناسب.
 
أصبحت الواجهات البرمجية التالية مهملةً ولا يجب استخدامها مطلقًا بعد الآن. يجب على التطبيقات والوحدات التي تستعمل إحداها أن تستعيض عنها بالبديل المناسب.
=== <code>util._extend(target, source)‎</code> ===
+
===<code>util._extend(target, source)‎</code>===
 
أضيف في الإصدار: v0.7.5. أهمل منذ الإصدار: v6.0.0.
 
أضيف في الإصدار: v0.7.5. أهمل منذ الإصدار: v6.0.0.
الاستقرار: 0-مهمل؛ استعمل التابع <code>Object.assign()‎</code> عوضًا عنه.
+
 
* <code>target</code>:‏ [[JavaScript/Object|<Object>]]
+
الاستقرار: 0-مهمل؛ استعمل التابع <code>[[JavaScript/Object/assign|Object.assign()]]‎</code> عوضًا عنه.
* <code>source</code>:‏ [[JavaScript/Object|<Object>]]
+
*<code>target</code>:‏ [[JavaScript/Object|<Object>]]
 +
*<code>source</code>:‏ [[JavaScript/Object|<Object>]]
 
لم يُقصَد أن يُستعمَل التابع <code>util._extend()‎</code> خارج وحدات Node.js الداخلية على الإطلاق. على أي حال، المجتمع هو من أوجده واستعمله.
 
لم يُقصَد أن يُستعمَل التابع <code>util._extend()‎</code> خارج وحدات Node.js الداخلية على الإطلاق. على أي حال، المجتمع هو من أوجده واستعمله.
أصبح هذا التابع مهملًا ويجب ألا يُستعمَل بعد الآن في أي شيفرة. تأتي JavaScript مع وظائف مدمجة مشابهة عبر <code>Object.assign()‎</code>.
+
 
=== <code>‎util.debug(string)</code> ===
+
أصبح هذا التابع مهملًا ويجب ألا يُستعمَل بعد الآن في أي شيفرة. تأتي JavaScript مع وظائف مدمجة مشابهة عبر <code>[[JavaScript/Object/assign|Object.assign()]]‎</code>.
 +
===<code>‎util.debug(string)</code>===
 
أضيف في الإصدار: v0.3.0. أهمل منذ الإصدار: v0.11.3.
 
أضيف في الإصدار: v0.3.0. أهمل منذ الإصدار: v0.11.3.
الاستقرار: 0-مهمل؛ استعمل التابع <code>console.error()‎</code> عوضًا عنه.
+
 
* <code>string</code>:‏ [[JavaScript/String|<string>]] الرسالة المراد طباعتها على مجرى الخطأ القياسي (stderr).
+
الاستقرار: 0-مهمل؛ استعمل التابع <code>[[Node.js/console#console.error.28.5Bdata.5D.5B.2C ...args.5D.29.E2.80.8E|console.error()]]‎</code> عوضًا عنه.
سلفٌ مهملٌ للتابع <code>console.error‎</code>.
+
*<code>string</code>:‏ [[JavaScript/String|<string>]] الرسالة المراد طباعتها على مجرى الخطأ القياسي (stderr).
=== <code>util.error([...strings])‎</code> ===
+
سلفٌ مهملٌ للتابع <code>[[Node.js/console#console.error.28.5Bdata.5D.5B.2C ...args.5D.29.E2.80.8E|console.error]]‎</code>.
 +
===<code>util.error([...strings])‎</code>===
 
أضيف في الإصدار: v0.3.0. أهمل منذ الإصدار: 0.11.3.
 
أضيف في الإصدار: v0.3.0. أهمل منذ الإصدار: 0.11.3.
الاستقرار: 0-مهمل؛ استعمل التابع <code>console.error()‎</code> عوضًا عنه.
+
 
* <code>...strings</code>:‏ [[JavaScript/String|<string>]] الرسالة المراد طباعتها على مجرى الخطأ القياسي (stderr).
+
الاستقرار: 0-مهمل؛ استعمل التابع <code>[[Node.js/console#console.error.28.5Bdata.5D.5B.2C ...args.5D.29.E2.80.8E|console.error()‎]]</code> عوضًا عنه.
سلفٌ مهملٌ للتابع <code>console.error‎</code>.
+
*<code>...strings</code>:‏ [[JavaScript/String|<string>]] الرسالة المراد طباعتها على مجرى الخطأ القياسي (stderr).
=== <code>util.isArray(object)‎</code> ===
+
سلفٌ مهملٌ للتابع <code>[[Node.js/console#console.error.28.5Bdata.5D.5B.2C ...args.5D.29.E2.80.8E|console.error‎]]</code>.
 +
===<code>util.isArray(object)‎</code>===
 
أضيف في الإصدار: v0.6.0. أهمل منذ الإصدار: v4.0.0.
 
أضيف في الإصدار: v0.6.0. أهمل منذ الإصدار: v4.0.0.
الاستقرار: 0-مهمل؛ استعمل التابع <code>Array.isArray()‎</code> عوضًا عنه.
+
 
* <code>object</code>:‏ <any>
+
الاستقرار: 0-مهمل؛ استعمل التابع <code>[[JavaScript/Array/isArray|Array.isArray()]]‎</code> عوضًا عنه.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*<code>object</code>:‏ <any>
يعدُّ هذا التابع اسمًا بديلًا للتابع <code>Array.isArray()‎</code>.
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى مصفوفةً. خلا ذلك، سيعيد القيمة <code>false‎</code>.
+
يعدُّ هذا التابع اسمًا بديلًا للتابع <code>[[JavaScript/Array/isArray|Array.isArray()‎]]</code>.
<syntaxhighlight lang="javascript">const util = require('util');
+
 
 +
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى مصفوفةً. خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
  
 
util.isArray([]);
 
util.isArray([]);
سطر 974: سطر 938:
 
util.isArray({});
 
util.isArray({});
 
// Returns: false
 
// Returns: false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.isBoolean(object)‎</code> ===
+
===<code>util.isBoolean(object)‎</code>===
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 +
 
الاستقرار: 0-مهمل؛ استعمل <code>typeof value === 'boolean'‎</code> عوضًا عنه.
 
الاستقرار: 0-مهمل؛ استعمل <code>typeof value === 'boolean'‎</code> عوضًا عنه.
* <code>object</code>:‏ <any>
+
*<code>object</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى قيمةً منطقيةً (boolean). خلا ذلك، سيعيد القيمة <code>false‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى قيمةً منطقيةً (boolean). خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
util.isBoolean(1);      // false
 
util.isBoolean(1);      // false
 
util.isBoolean(0);      // false
 
util.isBoolean(0);      // false
 
util.isBoolean(false); // true
 
util.isBoolean(false); // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.isBuffer(object)‎</code> ===
+
===<code>util.isBuffer(object)‎</code>===
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.4.0.
+
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.4.0. الاستقرار: 0-مهمل؛ استعمل التابع <code>[[Node.js/buffer#Buffer.isBuffer.28obj.29|Buffer.isBuffer()‎]]</code> عوضًا عنه.
الاستقرار: 0-مهمل؛ استعمل التابع <code>Buffer.isBuffer()‎</code> عوضًا عنه.
+
*<code>object</code>:‏ <any>
* <code>object</code>:‏ <any>
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى من النوع <code>Buffer‎</code>. خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى من النوع <code>Buffer‎</code>. خلا ذلك، سيعيد القيمة <code>false‎</code>.
 
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
util.isBuffer({ length: 0 }); // false
 
util.isBuffer({ length: 0 }); // false
 
util.isBuffer([]); // false
 
util.isBuffer([]); // false
 
util.isBuffer(Buffer.from('hello world')); // true
 
util.isBuffer(Buffer.from('hello world')); // true
=== <code>util.isDate(object)‎</code> ===
+
</syntaxhighlight>
أضيف في الإصدار: v0.6.0. أهمل منذ الإصدار: v4.0.0.
+
===<code>util.isDate(object)‎</code>===
الاستقرار: 0-مهمل؛ استعمل التابع <code>util.types.isDate()‎</code> عوضًا عنه.
+
أضيف في الإصدار: v0.6.0. أهمل منذ الإصدار: v4.0.0. الاستقرار: 0-مهمل؛ استعمل التابع <code>util.types.isDate()‎</code> عوضًا عنه.
* <code>object</code>:‏ <any>
+
*<code>object</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى من النوع <code>Date‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى من النوع <code>[[JavaScript/Date|Date‎]]</code>.<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">const util = require('util');
+
const util = require('util');
  
 
util.isDate(new Date()); // true
 
util.isDate(new Date()); // true
 
util.isDate(Date()); // false (سلسلةً نصيةً 'new' تعيد دون)
 
util.isDate(Date()); // false (سلسلةً نصيةً 'new' تعيد دون)
 
util.isDate({}); // false
 
util.isDate({}); // false
</syntaxhighlight>  
+
 
=== <code>util.isError(object)‎</code> ===
+
</syntaxhighlight>
أضيف في الإصدار: v0.6.0. أهمل منذ الإصدار: v4.0.0.
+
===<code>util.isError(object)‎</code>===
الاستقرار: 0-مهمل؛ استعمل التابع <code>util.types.isNativeError()‎</code> عوضًا عنه.
+
أضيف في الإصدار: v0.6.0. أهمل منذ الإصدار: v4.0.0. الاستقرار: 0-مهمل؛ استعمل التابع <code>util.types.isNativeError()‎</code> عوضًا عنه.
* <code>object</code>:‏ <any>
+
*<code>object</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى من النوع <code>Error</code>. خلا ذلك، سيعيد القيمة <code>false‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى من النوع <code>[[Node.js/errors#.D8.A7.D9.84.D8.B5.D9.86.D9.81 Error.E2.80.8E|Error]]</code>. خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
util.isError(new Error()); // true
 
util.isError(new Error()); // true
 
util.isError(new TypeError()); // true
 
util.isError(new TypeError()); // true
 
util.isError({ name: 'Error', message: 'an error occurred' }); // false
 
util.isError({ name: 'Error', message: 'an error occurred' }); // false
</syntaxhighlight>  
+
</syntaxhighlight>انتبه إلى أنَّ هذا التابع يعتمد على السلوك <code>Object.prototype.toString()‎</code>. يحتمل الحصول على نتيجة خطأ عندما يتحكم الوسيط <code>object‎</code> في <code>@@toStringTag‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
انتبه إلى أنَّ هذا التابع يعتمد على السلوك <code>Object.prototype.toString()‎</code>. يحتمل الحصول على نتيجة خطأ عندما يتحكم الوسيط <code>object‎</code> في <code>@@toStringTag‎</code>.
 
<syntaxhighlight lang="javascript">const util = require('util');
 
 
const obj = { name: 'Error', message: 'an error occurred' };
 
const obj = { name: 'Error', message: 'an error occurred' };
  
سطر 1٬029: سطر 988:
 
obj[Symbol.toStringTag] = 'Error';
 
obj[Symbol.toStringTag] = 'Error';
 
util.isError(obj); // true
 
util.isError(obj); // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.isFunction(object)‎</code> ===
+
===<code>util.isFunction(object)‎</code>===
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
+
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0. الاستقرار: 0-مهمل؛ استعمل <code>typeof value === 'function'‎</code> عوضًا عنه.
الاستقرار: 0-مهمل؛ استعمل <code>typeof value === 'function'‎</code> عوضًا عنه.
+
*<code>object</code>:‏ <any>
* <code>object</code>:‏ <any>
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى دالةً. خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى دالةً. خلا ذلك، سيعيد القيمة <code>false‎</code>.
 
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
function Foo() {}
 
function Foo() {}
سطر 1٬044: سطر 1٬001:
 
util.isFunction(Foo); // true
 
util.isFunction(Foo); // true
 
util.isFunction(Bar); // true
 
util.isFunction(Bar); // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.isNull(object)‎</code> ===
+
===<code>util.isNull(object)‎</code>===
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
+
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0. الاستقرار: 0-مهمل؛ استعمل <code>value === null</code> عوضًا عنه.
الاستقرار: 0-مهمل؛ استعمل <code>value === null</code> عوضًا عنه.
+
*<code>object</code>:‏ <any>
* <code>object</code>:‏ <any>
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى يساوي القيمة <code>null‎</code> بشكل صارم (strictly). خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى يساوي القيمة <code>null‎</code> بشكل صارم (strictly). خلا ذلك، سيعيد القيمة <code>false‎</code>.
 
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
util.isNull(0); // false
 
util.isNull(0); // false
 
util.isNull(undefined); // false
 
util.isNull(undefined); // false
 
util.isNull(null); // true
 
util.isNull(null); // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.isNullOrUndefined(object)‎</code> ===
+
===<code>util.isNullOrUndefined(object)‎</code>===
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
+
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0. الاستقرار: 0-مهمل؛ استعمل <code>value === undefined || value === null‎</code> عوضًا عنه.
الاستقرار: 0-مهمل؛ استعمل <code>value === undefined || value === null‎</code> عوضًا عنه.
+
*<code>object</code>:‏ <any>
* <code>object</code>:‏ <any>
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى هو <code>null‎</code> أو <code>undefined‎</code>. خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى هو <code>null‎</code> أو <code>undefined‎</code>. خلا ذلك، سيعيد القيمة <code>false‎</code>.
 
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
util.isNullOrUndefined(0); // false
 
util.isNullOrUndefined(0); // false
 
util.isNullOrUndefined(undefined); // true
 
util.isNullOrUndefined(undefined); // true
 
util.isNullOrUndefined(null); // true
 
util.isNullOrUndefined(null); // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.isNumber(object)‎</code> ===
+
===<code>util.isNumber(object)‎</code>===
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 +
 
الاستقرار: 0-مهمل؛ استعمل <code>typeof value === 'number'‎</code> عوضًا عنه.
 
الاستقرار: 0-مهمل؛ استعمل <code>typeof value === 'number'‎</code> عوضًا عنه.
* <code>object</code>:‏ <any>
+
*<code>object</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى عددًا (Number). خلا ذلك، سيعيد القيمة <code>false‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى [[JavaScript/Number|عددًا]] (Number). خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
util.isNumber(false); // false
 
util.isNumber(false); // false
سطر 1٬081: سطر 1٬034:
 
util.isNumber(0); // true
 
util.isNumber(0); // true
 
util.isNumber(NaN); // true
 
util.isNumber(NaN); // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.isObject(object)‎</code> ===
+
===<code>util.isObject(object)‎</code>===
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 +
 
الاستقرار: 0-مهمل؛ استعمل <code>value !== null && typeof value === 'object'‎</code> عوضًا عنه.
 
الاستقرار: 0-مهمل؛ استعمل <code>value !== null && typeof value === 'object'‎</code> عوضًا عنه.
* <code>object</code>:‏ <any>
+
*<code>object</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى هو من النوع <code>Object‎</code> حتمًا وليس من دالةً (Function، رغم أنَّ الدوال هي كائنات في JavaScript). خلا ذلك، ستعيد القيمة <code>false‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى هو من النوع <code>Object‎</code> حتمًا وليس من دالةً (Function، رغم أنَّ الدوال هي كائنات في JavaScript). خلا ذلك، ستعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
util.isObject(5); // false
 
util.isObject(5); // false
سطر 1٬094: سطر 1٬047:
 
util.isObject({}); // true
 
util.isObject({}); // true
 
util.isObject(() => {}); // false
 
util.isObject(() => {}); // false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.isPrimitive(object)‎</code> ===
+
===<code>util.isPrimitive(object)‎</code>===
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 +
 
الاستقرار: 0-مهمل؛ استعمل <code>‎(typeof value !== 'object' && typeof value !== 'function') || value === null</code> عوضًا عنه.
 
الاستقرار: 0-مهمل؛ استعمل <code>‎(typeof value !== 'object' && typeof value !== 'function') || value === null</code> عوضًا عنه.
* <code>object</code>:‏ <any>
+
*<code>object</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى أحدَ الأنواع الأساسية (primitive type). خلا ذلك، سيعيد القيمة <code>false‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى أحدَ الأنواع الأساسية (primitive type). خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
util.isPrimitive(5); // true
 
util.isPrimitive(5); // true
سطر 1٬112: سطر 1٬065:
 
util.isPrimitive(/^$/); // false
 
util.isPrimitive(/^$/); // false
 
util.isPrimitive(new Date()); // false
 
util.isPrimitive(new Date()); // false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.isRegExp(object)‎</code> ===
+
===<code>util.isRegExp(object)‎</code>===
أضيف في الإصدار: v0.6.0. أهمل منذ الإصدار: v4.0.0.
+
أضيف في الإصدار: v0.6.0. أهمل منذ الإصدار: v4.0.0. الاستقرار: 0-مهمل.
الاستقرار: 0-مهمل.
+
*<code>object</code>:‏ <any>
* <code>object</code>:‏ <any>
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى من النوع <code>[[JavaScript/RegExp|RegExp‎]]</code>. خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى من النوع <code>RegExp‎</code>. خلا ذلك، سيعيد القيمة <code>false‎</code>.
 
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
util.isRegExp(/some regexp/); // true
 
util.isRegExp(/some regexp/); // true
 
util.isRegExp(new RegExp('another regexp')); // true
 
util.isRegExp(new RegExp('another regexp')); // true
 
util.isRegExp({}); // false
 
util.isRegExp({}); // false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>‎util.isString(object)</code> ===
+
===<code>‎util.isString(object)</code>===
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
الاستقرار: 0-مهمل؛ استعمل <code>‎typeof value === 'string'</code> عوضًا عنه.
+
 
* <code>object</code>:‏ <any>
+
الاستقرار: 0-مهمل؛ استعمل <code>‎typeof value === 'string'</code> عوضًا عنه.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*<code>object</code>:‏ <any>
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى سلسلة نصية (String). خلا ذلك، سيعيد القيمة <code>false‎</code>.
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
<syntaxhighlight lang="javascript">const util = require('util');
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى [[JavaScript/String|سلسلة نصية]] (String). خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
  
 
util.isString(''); // true
 
util.isString(''); // true
سطر 1٬137: سطر 1٬088:
 
util.isString(String('foo')); // true
 
util.isString(String('foo')); // true
 
util.isString(5); // false
 
util.isString(5); // false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.isSymbol(object)‎</code> ===
+
===<code>util.isSymbol(object)‎</code>===
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 +
 
الاستقرار: 0-مهمل؛ استعمل <code>typeof value === 'symbol'‎</code> عوضًا عنه.
 
الاستقرار: 0-مهمل؛ استعمل <code>typeof value === 'symbol'‎</code> عوضًا عنه.
* <code>object</code>:‏ <any>
+
*<code>object</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى من النوع <code>Symbol‎</code>. خلا ذلك، سيعيد القيمة <code>false‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى من النوع <code>[[TypeScript/symbols|Symbol‎]]</code>. خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
util.isSymbol(5); // false
 
util.isSymbol(5); // false
 
util.isSymbol('foo'); // false
 
util.isSymbol('foo'); // false
 
util.isSymbol(Symbol('foo')); // true
 
util.isSymbol(Symbol('foo')); // true
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>‎util.isUndefined(object)</code> ===
+
===<code>‎util.isUndefined(object)</code>===
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 
أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.
 +
 
الاستقرار: 0-مهمل؛ استعمل <code>value === undefined</code> عوضًا عنه.
 
الاستقرار: 0-مهمل؛ استعمل <code>value === undefined</code> عوضًا عنه.
* <code>object</code>:‏ <any>
+
*<code>object</code>:‏ <any>
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
+
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى هو <code>undefined‎</code>. خلا ذلك، سيعيد القيمة <code>false‎</code>.
+
يعيد هذا التابع القيمة <code>true‎</code> المنطقية إن كان الكائن <code>object</code> المعطى هو <code>[[JavaScript/undefined|undefined‎]]</code>. خلا ذلك، سيعيد القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">const util = require('util');
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
const foo = undefined;
 
const foo = undefined;
سطر 1٬162: سطر 1٬113:
 
util.isUndefined(foo); // true
 
util.isUndefined(foo); // true
 
util.isUndefined(null); // false
 
util.isUndefined(null); // false
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.log(string)‎</code> ===
+
===<code>util.log(string)‎</code>===
أضيف في الإصدار: v0.3.0. أهمل منذ الإصدار: v6.0.0.
+
أضيف في الإصدار: v0.3.0. أهمل منذ الإصدار: v6.0.0. الاستقرار: 0-مهمل؛ استعمل وحدة مُقدَّمة من طرف ثالث عوضًا عنه.
الاستقرار: 0-مهمل؛ استعمل وحدة مُقدَّمة من طرف ثالث عوضًا عنه.
+
*<code>string</code>:‏ [[JavaScript/String|<string>]]
* <code>string</code>:‏ [[JavaScript/String|<string>]]
+
يطبع التابع <code>util.log()‎</code> السلسلة النصية <code>string‎</code> المعطاة على مجرى الخرج القياسي (stdout) مع إضافة بصمة وقت.<syntaxhighlight lang="javascript">const util = require('util');
يطبع التابع <code>util.log()‎</code> السلسلة النصية <code>string‎</code> المعطاة على مجرى الخرج القياسي (stdout) مع إضافة بصمة وقت.
 
<syntaxhighlight lang="javascript">const util = require('util');
 
  
 
util.log('Timestamped message.');
 
util.log('Timestamped message.');
</syntaxhighlight>  
+
</syntaxhighlight>
=== <code>util.print([...strings])‎</code> ===
+
===<code>util.print([...strings])‎</code>===
 
أضيف في الإصدار: v0.3.0. أهمل منذ الإصدار: v0.11.3.
 
أضيف في الإصدار: v0.3.0. أهمل منذ الإصدار: v0.11.3.
 +
 
الاستقرار: 0-مهمل؛ استعمل التابع <code>console.log()‎</code> عوضًا عنه.
 
الاستقرار: 0-مهمل؛ استعمل التابع <code>console.log()‎</code> عوضًا عنه.
 +
 
سلفٌ مهملٌ للتابع <code>console.log‎</code>.
 
سلفٌ مهملٌ للتابع <code>console.log‎</code>.
=== <code>util.puts([...strings])‎</code> ===
+
===<code>util.puts([...strings])‎</code>===
 
أضيف في الإصدار: v0.11.3. أهمل منذ الإصدار: v0.11.3.
 
أضيف في الإصدار: v0.11.3. أهمل منذ الإصدار: v0.11.3.
الاستقرار: 0-مهمل؛ استعمل التابع <code>‎console.log()</code> عوضًا عنه.
+
 
 +
الاستقرار: 0-مهمل؛ استعمل التابع <code>‎console.log()</code> عوضًا عنه.
 +
 
 
سلفٌ مهملٌ للتابع <code>console.log‎</code>.
 
سلفٌ مهملٌ للتابع <code>console.log‎</code>.
== مصادر ==
+
==مصادر==
* صفحة util في توثيق Node.js الرسمي.
+
*[https://nodejs.org/dist/latest-v10.x/docs/api/util.html صفحة util في توثيق Node.js الرسمي.]<noinclude>{{DISPLAYTITLE:الوحدة <code>util</code>‎ في Node.js}}</noinclude>
[[تصنيف: Node.js]]
+
[[تصنيف: Node.js|{{SUBPAGENAME}}]]

المراجعة الحالية بتاريخ 11:14، 23 أكتوبر 2018

صُمِّمَت الوحدة util بشكل أساسي لتلبية احتياجات واجهات Node.js البرمجيّة الداخليّة. هذا لا يمنَع كون الأدوات، التي توفرها الوحدة، مفُيدةً للتطبيقات ولمطوري الوحدات البرمجيّة. يمكنك استيراد الوحدة والبدء باستخدامها عبر تنفيذ:

const util = require('util');

util.callbackify(original)‎

أُضيف في الإصدار: v8.2.0.

  • original‎:‏ <Function> دالة async‎ غير متزامنة.
  • القيم المُعادة: <Function> دالةً من نمط دوال رد النداء (callback function).

يأخُذ التابِع الدالة async (أو دالة تُعيد كاِئنًا من النوع Promise) ويعيد دالةً تتبع نمط دالة رد النداء «الخطأ أولًا» (error-first callback)، مثل أخذ رد النداء ‎(err, value) => …‎ كآخر وسيط. في دالة رد النداء، الوسيط الأول سيعبِّر عن سبب الرفض (أو القيمة null‎ إن قُبِل الكائن Promise‎)، والوسيط الثاني سيكون القيمة المقبولة.

const util = require('util');

async function fn() {
  return 'hello world';
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  if (err) throw err;
  console.log(ret);
});

ستطبع هذه الشيفرة عند تنفيذها الناتج التالي:

hello world

تنفَّذ دالة رد النداء بشكل غير متزامن، وستملك آنذاك تعقُّبَ مكدسٍ محدودٍ. إن رمت دالة رد النداء خطأً، فستُطلِق العملية الحدث 'uncaughtException'، وستخرج العملية إن لم يعالج. بما أنَّ القيمة null‎ لها معنًى خاص في كونها قيمةً للوسيط الأول في دالة رد النداء، فإن رفضَت دالةٌ محاطَةٌ (wrapped function) الكائن Project‎ مع قيمة خطأ (falsy value) بوصفها سببًا، فستُغلَّف القيمة بالخطأ Error‎ مع القيمة الأصلية المخزَّنة في حقلٍ يدعى reason‎.

function fn() {
  return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  // Error غُلِّفت مع الخطأ ،'null' مع القيمة Promise عندما رُفِض الكائن
  // 'reason' وخُزِّنت القيمة الأصلية في
  err && err.hasOwnProperty('reason') && err.reason === null;  // true
});

util.debuglog(section)‎

أضيف في الإصدار: v0.11.3.

  • section‎:‏ <string> سلسلة نصية تحدِّد الجزء الذي يجري إنشاء الدالة debuglog‎ من أجله في التطبيق.
  • القيم المعادة: <Function> دالة تسجيل (logging function).

يستعمَل التابع util.debuglog()‎ لإنشاء دالةٍ تكتب رسائل خطأٍ بشكل شرطي في مجرى الخطأ القياسي (stderr) اعتمادًا على وجود متغير البيئة NODE_DEBUG‎. إن ظهر الاسم section‎ في قيمة متغير البيئة، فستعمل الدالة المعادة بشكل مشابه للتابع console.error()‎. أمَّا إن لم يظهر، فستنفِّذ الدالة المعادة حينئذٍ العمليَّة no-op (عمليَّة فارغة [no operation]).

const util = require('util');
const debuglog = util.debuglog('foo');

debuglog('hello from foo [%d]', 123);

إن شُغِّل هذا التطبيق مع ضبط متغير البيئة NODE_DEBUG‎ بالشكل NODE_DEBUG=foo‎، فسيُظهِر شيئًا شبيهًا بالناتج التالي:

FOO 3245: hello from foo [123]

يمثِّل العدد 3245‎ معرِّف العملية. وإن شُغِّل دون ضبط متغير البيئة، فلن يُطبَع آنذاك أي ناتج. يدعم الاسم section‎ محارف الصدفة الخاصَّة (wildcard ويشار إليها meta characters) أيضًا:

const util = require('util');
const debuglog = util.debuglog('foo-bar');

debuglog('hi there, it\'s foo-bar [%d]', 2333);

إن شُغِّل هذا التطبيق مع ضبط متغير البيئة بالشكل NODE_DEBUG=foo*‎، فسيطبع شيئًا شبيهًا بالناتج التالي:

FOO-BAR 3257: hi there, it's foo-bar [2333]

قد تُستعمَل عدة أسماء مفصولة بفاصلة مع setion‎ في متغير البيئة NODE_DEBUG‎ مثل NODE_DEBUG=fs,net,tls.

util.deprecate(fn, msg[, code])‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 أصبحت تحذيرات الإهمال تُطلَق مرةً واحدةً فقط لكل شيفرة.
v0.8.0 أضيف هذا التابع.
  • fn‎:‏ <Function> الدالة التي يجري إهمالها.
  • msg:‏ <string> رسالة التحذير المراد إظهارها عندما تستدعى الدالة المهملة.
  • code:‏ <string> الشيفرة المهملة.
  • القيم المعادة: <Function> الدالة المهملة بعد تغليفها لإطلاق تحذير.

يغلف التابع util.deprecate()‎ الدالة (أو الصنف) fn‎ بطريقة تبدو فيها وكأنَّها مهملةٌ.

const util = require('util');

exports.obsoleteFunction = util.deprecate(() => {
  // افعل شيئًا هنا.
}, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.');

عندما تنفَّذ هذه الشيفرة ويستدعى التابع util.deprecate()‎، ستعيد دالةً تطلق التحذير DeprecationWarning‎ باستعمال الحدث 'warning'. سيُطلَق التحذير وسيُطبع على مجرى الخطأ القياسي (stderr) أول مرة تستدعى فيها الدالة المعادة. بعد أن يُطلَق التحذير، تُستدعَى الدالة المُغلَّفَة دون إطلاق تحذير. إن أعطيت الشيفرة code‎ الاختيارية نفسها في عدة استدعاءات إلى التابع util.deprecate()‎، فستُطلَق الاستدعاءات مرةً واحدةً فقط للشيفرة code‎ تلك.

const util = require('util');

const fn1 = util.deprecate(someFunction, someMessage, 'DEP0001');
const fn2 = util.deprecate(someOtherFunction, someOtherMessage, 'DEP0001');
fn1(); // DEP0001 إطلاق تحذير إهمال مع الرمز
fn2(); // لا يطلق هنا أي تحذير إهمال لأن هذه الدالة تملك الشيفرة نفسها للدالة السابقة

إن استعملت إمَّا الراية ‎--no-deprecation أو الراية ‎--no-warnings‎ أو ضبطت الخاصية process.noDeprecation‎ إلى القيمة true‎ قبل إطلاق أول تحذير إهمال، فلن يفعل التابع util.deprecate()‎ أي شيء.

إن استعملت إمَّا الراية ‎--trace-deprecation‎ أو الراية ‎--trace-warnings أو ضبطت الخاصية process.traceDeprecation إلى القيمة true‎، فستُطبَع التحذيرات وتعقبات المكدس (stack trace) على مجرى الخطأ القياسي (stderr) في المرة الأولى التي تستدعى فيها الدالة المهملة

إن استعملت الراية ‎--throw-deprecation‎ أو ضُبطَت الخاصية process.throwDeprecation‎ إلى القيمة true‎، فسيُرمَى استثناءٌ عندما تستدعَى الدالة المهملة.

إنَّ للراية --throw-deprecation‎ والخاصية process.throwDeprecation‎ أولويةٌ على الراية ‎--trace-deprecation والخاصية process.traceDeprecation‎.

util.format(format[, ...args])‎

سجل التغييرات
الإصدار التغييرات
v8.4.0 أصبح المحدِّدان ‎%‎o‎ و ‎%O‎ مدعومين الآن.
v0.5.3 أضيف هذا التابع.
  • format‎:‏ <string> سلسلة تنسيق نصية تشبه التنسيق المستعمل في printf‎.

يعيد التابع util.format()‎ سلسلةً نصيةً منسَّقة باستعمال الوسيط الأول على أنَّه تنسيقٌ شبيهٌ بالتنسيق printf‎.

الوسيط الأول هو سلسلة نصية تحوي رموزًا نائبةً (placeholder tokens). يُستبدَل بكل رمز نائب القيمة المحوَّلة من الوسيط المقابل. الرموز النائبة المدعومة هي:

  • ‎%s‎: سلسلة نصية.
  • %d: عددٌ صحيح أو عشري.
  • %i‎: عدد صحيح.
  • %f‎: عدد عشري.
  • %j‎: صيغة JSON. يستبدل بها السلسلة النصية '[Circular]' إن احتوى الوسيط على مراجع دائرية (circular references).
  • %o‎: كائنٌ. سلسلةٌ نصيةٌ ممثلةٌ لكائنٍ مع تنسيق الكائن العام في JavaScript. هذا يشبه التابع util.inspect()‎ مع الخيارات { showHidden: true, showProxy: true }‎. سيُظهر ذلك الكائن كاملًا من ضمنها الخاصيات والوسطاء (proxies) الغير قابلة للإحصاء (non-enumerable).
  • %O‎: كائنٌ. سلسلةٌ نصيةٌ ممثلةٌ لكائنٍ مع تنسيق الكائن العام في JavaScript. هذا يشبه التابع util.inspect()‎ دون خيارات. سيُظهر ذلك الكائن كاملًا باستثناء الخاصيات والوسطاء (proxies) الغير قابلة للإحصاء (non-enumerable).
  • %%‎: إشارة مئوية واحدة ('%'). هذا لا يستهلك وسيطًا.
  • القيم المعادة: <string> السلسلة النصية بعد تنسيقها.

إن لم يكن هنالك وسيطٌ مقابلٌ للرمز النائب المعطى، فسيُطبَع الرمز النائب دون استبدال.

util.format('%s:%s', 'foo');
// 'foo:%s' :سيُعاد

وإن كانت الوسائط المُمرَّرة إلى التابع util.format()‎ أكثرَ عددًا من الرموز النائبة، فستُحوَّل هذه الوسائط إلى سلاسل نصية ثمَّ تضاف إلى السلسلة النصية المعادة، إذ يُفصَل كل وسيط بفراغ. الوسائط الزائدة التي من النوع (أي يعطي استعمال typeof‎ معها) 'object' أو 'symbol' (باستثناء null‎) ستُحوَّل باستعمال التابع util.inspect()‎.

util.format('%s:%s', 'foo', 'bar', 'baz'); // 'foo:bar baz'

إن لم يكن الوسيط الأول سلسلةً نصيةً، فسيعيد التابع util.format()‎ حينئذٍ سلسلة نصية ناتجة عن جمع جميع الوسائط مع بعضها عبر فصل كلٍّ منها بفراغ، إذ يحوَّل آنذاك الوسيط إلى سلسلة نصية عبر التابع util.inspect()‎.

util.format(1, 2, 3); // '1 2 3'

إن مُرِّر وسيطٌ واحدٌ فقط إلى التابع util.format()‎، فسيُعاد الوسيط نفسه دون أي تنسيق.

util.format('%% %s'); // '%% %s'

انتبه إلى أنَّ التابع util.format()‎ هو تابعٌ متزامنٌ يستعمل بشكل أساسي كأداةٍ لتنقيح الأخطاء. يمكن أن تسبِّب بعض قيم المدخلات حملًا زائدًا كبيرًا على الأداء قد يحجب حلقة الأحداث (event loop)، لذا استعمل هذا التابع بحذر ولا تستعمله في مسارات الشيفرة التنفيذية (code execution paths وتدعى أيضًا hot code path).

util.formatWithOptions(inspectOptions, format[, ...args])‎

أضيف في الإصدار: v10.0.0.

هذا التابع ممائل تمامًا للتابع util.format()‎ باستثناء أنَّه يأخذ الوسيط inspectOptions‎ الذي يحدِّد الخيارات التي تُمرَّر إلى التابع util.inspect()‎.

util.formatWithOptions({ colors: true }, 'See object %O', { foo: 42 });
// إذ يلوَّن العدد '42' كعدد 'See object { foo: 42 }' ستعاد السلسلة
// عند طباعته على الطرفية

util.getSystemErrorName(err)‎

أضيف في الإصدار: v9.7.0.

يعيد هذا التابع سلسلةً نصيةً تمثِّل اسم الخطأ ذا الرمز err‎ الناتج عن إحدى واجهات Node.js البرمجية. تعتمد عملية الربط بين رموز الأخطاء وأسمائها على المنصة المستعملة. اطلع على أسماء الأخطاء الشائعة في القسم «أخطاء النظام الشائعة».

fs.access('file/that/does/not/exist', (err) => {
  const name = util.getSystemErrorName(err.errno);
  console.error(name);  // ENOENT
});

util.inherits(constructor, superConstructor)‎

سجل التغييرات
الإصدار التغييرات
v5.0.0 أصبح بإمكان المعامل constructor أن يشير إلى الصنف ES6 الآن.
v0.3.0 أضيف هذا التابع.

استعمال التابع util.inherits()‎ غير موثوق. استعمل رجاءً الكلمات المفتاحية ES6 class‎ و extends‎ للحصول على دعمٍ للوراثة على مستوى اللغة. لاحظ أيضًا أن النمطين غير متوافقان دلاليًّا.

يورث هذا التابع التوابع prototype‎ من باني (constructor) لآخر. سيُضبَط prototype‎‎ للباني constructor‎ إلى الكائن الجديد المنشأ من الباني superConstructor‎.

للسهولة، سيكون الباني superConstructor‎ قابلًا للوصول عبر الخاصية constructor.super_‎.

const util = require('util');
const EventEmitter = require('events');

function MyStream() {
  EventEmitter.call(this);
}

util.inherits(MyStream, EventEmitter);

MyStream.prototype.write = function(data) {
  this.emit('data', data);
};

const stream = new MyStream();

console.log(stream instanceof EventEmitter); // true
console.log(MyStream.super_ === EventEmitter); // true

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('It works!'); // "It works!" :البيانات المستلمة

المثال التالي هو عن ES6 وكيفية استعمال الكلمتين المفتاحيتين class‎ و extends‎:

const EventEmitter = require('events');

class MyStream extends EventEmitter {
  write(data) {
    this.emit('data', data);
  }
}

const stream = new MyStream();

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('With ES6');

util.inspect(object[,options])‎ و util.inspect(object[, showHidden[, depth[, colors]]])‎

سجل التغييرات
الإصدار التغييرات
v10.6.0 أصبح فحص القوائم المرتبطة (linked lists) والكائنات المشابهة متاحًا الآن حتى حجم مكدِّس الاستدعاء الأقصى.
v10.0.0 يمكن الآن فحص المدخلتين WeakMap‎ و WeakSet‎.
v9.9.0 أصبح الخيار compact‎ مدعومًا الآن.
v6.6.0 تستطيع دوال الفحص المخصصة (custom inspection functions) الآن إعادة this‎.
v6.3.0 أصبح الخيار breakLength‎ مدعومًا الآن.
v6.1.0 أصبح الخيار maxArrayLength مدعومًا الآن. بعبارة أخرى، ستُقتطع الآن المصفوفات الطويلة بشكل افتراضي.
v6.1.0 أصبح الخيار showProxy مدعومًا الآن.
v0.3.0 أضيف هذا التابع.
  • object:‏ <any> أي نوع أساسي من أنواع JavaScript أو كائن من النوع Object‎.
  • options:‏ <Object>
    • showHidden:‏ <boolean> قيمة منطقية إن كانت true‎، فستُضمَّن رموز وخاصيات الكائن object‎ غير القابلة للإحصاء (non-enumerable) في السلسلة النصية المنسقة الناتجة بالإضافة إلى المدخلات WeakMap‎ و WeakSet‎. القيمة الافتراضية هي: false‎.
    • depth:‏ <number> يحدِّد عدد مرات التكرار (recurse) أثناء تنسيق الكائن object‎. هذا الخيار مفيدٌ مع الكائنات الكبيرة المعقدة. إن أردت أن تصل عمليات التكرار إلى حجم مكدس الاستدعاء الأقصى، فمرِّر القيمة Infinity‎ أو القيمة null‎ لهذا الخيار. القيمة الافتراضية هي: 2.
    • colors:‏ <boolean> قيمة منطقية إن كانت true‎، فستُنسَّق المخرجات بحسب معيار ANSI للألوان. اطلع على القسم «تخصيص الألوان» لمزيد من المعلومات حول تخصيص الألوان في التابع util.inspect. القيمة الافتراضية هي: false.
    • customInspect:‏ <boolean> قيمة منطقية إن كانت false، فلن تستدعى الدوال inspect(depth, opts)‎ المخصصة آنذاك. القيمة الافتراضية هي: true‎.
    • showProxy:‏ <boolean> قيمة منطقية إن كانت false‎، فستُفحَص (introspected) حينئذٍ الكائنات والدوال التي هي كائناتٌ من النوع Proxy‎ لإظهار الكائنات target‎ والكائنات handler‎ الخاصة بهم. القيمة الافتراضية هي: false‎.
    • maxArrayLength:‏ <number> يحدِّد عدد العناصر الأقصى للكائنات Array‎، و TypedArray‎، و WeakMap‎، و WeakSet‎ التي ستُشمَل في عملية التنسيق. إن أردت إظهار جميع العناصر، فاضبط هذا الخيار إلى القيمة null‎ أو القيمة Infinity‎. إن ضبط هذا الخيار إلى القيمة 0 أو أية قيمة سالبة، فلن يُظهَر أي عنصر. القيمة الافتراضية هي: 100.
    • breakLength:‏ <number> الطول الذي ستُجزَّأ عنده مفاتيح الكائن إلى عدة أسطر. إن ضبط هذا الخيار إلى القيمة Infinity‎، فسيُنسَّق الكائن على أنَّه سطرٌ واحدٌ. القيمة الافتراضية هي: 60 من أجل التوافقية الإرثية (legacy compatibility).
    • compact:‏ <boolean> يؤدي ضبط هذا الخيار إلى القيمة false‎ إلى تغيير القيمة الافتراضية للبادئة الفارغة المراد استعمالها لفصل الأسطر لكل مفتاح كائن عوضًا عن وضع عدة خاصيات في سطر واحد. سيُفصَل أيضًا النص الذي يزيد عن الحجم breakLength‎ إلى أجزاء أصغر وأفضل للقراءة بالإضافة إلى إزاحة الكائنات بشكل مماثل تمامًا للمصفوفات. انتبه إلى أنَّ أي جزء من النص لن يقل عن 16 محرف بغض النظر عن القيمة breakLength‎‎. لمزيد من المعلومات، تفحَّص المثال في الأسفل. القيمة الافتراضية هي: true‎.
  • القيم المعادة: <string> سلسلة نصية تمثِّل الكائن المعطى.

يعيد التابع util.inspect()‎ سلسلةً نصيةً تمثِّل الوسيط object المعطى الذي يراد تنقيحه من الأخطاء (debugging). قد تتغيَّر مخرجات التابع util.inspect‎ في أي وقت ولا يجب الاعتماد عليها برمجيًا. قد تمرَّر الخيارات option‎ لضبط كيفية تنسيق السلسلة النصية من نواحٍ محدَّدة. سيستعمل التابع util.inspect()‎ اسم الباني و/أو ‎@@toStringTag‎ لإنشاء وسمٍ قابل للتعريف (identifiable tag) للقيمة الناتجة.

class Foo {
  get [Symbol.toStringTag]() {
    return 'bar';
  }
}

class Bar {}

const baz = Object.create(null, { [Symbol.toStringTag]: { value: 'foo' } });

util.inspect(new Foo()); // 'Foo [bar] {}'
util.inspect(new Bar()); // 'Bar {}'
util.inspect(baz);       // '[foo] {}'

يتفحَّص المثال التالي جميع خاصيات الكائن utile‎:

const util = require('util');

console.log(util.inspect(util, { showHidden: true, depth: null }));

قد تعطي القيم الدوال inspect(depth, opts)‎ المخصَّصة الخاصة بها، إذ يُمرَّر إليها عند استدعائها الخيار depth‎ في التفحُّص التكراري (recursive inspection) بالإضافة إلى الخيار options‎ الذي مُرِّر إلى التابع util.inspect()‎. يسلط المثال التالي الضوء على الخيار compact‎:

const util = require('util');

const o = {
  a: [1, 2, [[
    'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do ' +
      'eiusmod tempor incididunt ut labore et dolore magna aliqua.',
    'test',
    'foo']], 4],
  b: new Map([['za', 1], ['zb', 'test']])
};
console.log(util.inspect(o, { compact: true, depth: 5, breakLength: 80 }));

// { a:
//   [ 1,
//     2,
//     [ [ 'Lorem ipsum dolor sit amet, consectetur [...]', // A long line
//           'test',
//           'foo' ] ],
//     4 ],
//   b: Map { 'za' => 1, 'zb' => 'test' } }

// إلى تغيير المخرجات لتصبح أكثر قابلية للقراءة false إلى القيمة `compact` يؤدي ضبط الخيار
console.log(util.inspect(o, { compact: false, depth: 5, breakLength: 80 }));

// {
//   a: [
//     1,
//     2,
//     [
//       [
//         'Lorem ipsum dolor sit amet, consectetur ' +
//           'adipiscing elit, sed do eiusmod tempor ' +
//           'incididunt ut labore et dolore magna ' +
//           'aliqua.,
//         'test',
//         'foo'
//       ]
//     ],
//     4
//   ],
//   b: Map {
//     'za' => 1,
//     'zb' => 'test'
//   }
// }

// "Lorem ipsum" إلى قيمة مثل 150 سيؤدي إلى طباعة النص `breakLength` ضبط الخيار
// في سطر واحد
// إلى قطع أصغر "Lorem ipsum" سيتسبَّب في تقطيع النص `breakLength` تقليل قيمة الخيار

يسمح استعمال الخيار showHidden‎ بفحص المدخلات WeakMap‎ و WeakSet‎. إن كان هنالك مدخلات تزيد عن القيمة maxArrayLength‎، فلا يمكن معرفة أية مدخلات ستظهر. هذا يعني أنَّ استدعاء التابع util.inspect()‎ لجلب نفس مدخلات الكائن WeakSet‎ مرتين قد لا يعطي نفس النتيجة المتوقعة بل قد يعطي ناتجًا مختلفًا. أضف إلى ذلك أنَّ أي عنصر قد ينتقل إلى المهملات عبر مجمِّع المهملات (garbage collector) في أي لحظة من الزمن إن لم يبقى هنالك مرجعًا قويًا لذلك الكائن. بناءً على ذلك، ليس هنالك أي ضمان للحصول على نفس الناتج في كل مرة.

const { inspect } = require('util');

const obj = { a: 1 };
const obj2 = { b: 2 };
const weakSet = new WeakSet([obj, obj2]);

console.log(inspect(weakSet, { showHidden: true }));
// WeakSet { { a: 1 }, { b: 2 } }

انتبه إلى أنَّ التابع util.inspect()‎ هو تابعٌ متزامنٌ يُستعمَل بشكل أساسي كأداة لتنقيح الأخطاء. يمكن أن تسبِّب بعض قيم المدخلات حملًا زائدًا كبيرًا على الأداء قد يحجب حلقة الأحداث (event loop)، لذا استعمل هذا التابع بحذر ولا تستعمله في مسارات الشيفرة التنفيذية (code execution paths وتدعى أيضًا hot code path).

تخصيص الألوان في التابع util.inspect‎

يمكن تخصيص ألوان المخرجات (إن كانت مفعلة) في التابع util.inspect‎ على الصعيد العام (globally) عبر الخاصيتين util.inspect.styles‎ و util.inspect.colors‎.

الخاصية util.inspect.styles‎ هي خريطة (map) تربط اسم النمط (style name) باللون في الخاصية util.inspect.colors‎. الألوان الافتراضية المرتبطة بالأنماط هي:

  • yellow‎ - number‎
  • yellow‎ - boolean‎
  • green‎ - string‎
  • magenta‎ - date‎
  • red‎ - ‎regexp
  • ‎bold - null‎
  • gray‎ - undefined‎
  • ‎cyan - special‎ (لا تطبق على الدوال في الوقت الحالي.)
  • name‎ - (لا يوجد لون)

رموز الألوان المعرَّفة مسبقًا هي: white‎، و gray، و black، و blue، و cyan، و green، و magenta، و red، و yellow. هنالك أيضًا الرموز bold‎، و italic، و underline، و inverse.

يستعمل نمط الألوان رموز تحكم ANSI التي قد لا تكون مدعومةً في جميع الطرفيات.

تخصيص دوال الفحص في الكائنات (Custom inspection functions on Objects)

قد تُعرِّف الكائنات دالةً من الشكل [util.inspect.custom](depth, opts)‎ (أو الدالة inspect(depth, opts)‎ المكافئة إلا أنَّها أصبحت مهملة) خاصة بها سيستدعيها التابع util.inspect()‎ ويستعمل الناتج الذي تعيده عند تفحُّص الكائن:

const util = require('util');

class Box {
  constructor(value) {
    this.value = value;
  }

  [util.inspect.custom](depth, options) {
    if (depth < 0) {
      return options.stylize('[Box]', 'special');
    }

    const newOptions = Object.assign({}, options, {
      depth: options.depth === null ? null : options.depth - 1
    });

    // "Box< " استعمال حاشية بمقدار خمسة فراغات لأن هذا هو حجم
    const padding = ' '.repeat(5);
    const inner = util.inspect(this.value, newOptions)
                      .replace(/\n/g, `\n${padding}`);
    return `${options.stylize('Box', 'special')}< ${inner} >`;
  }
}

const box = new Box(true);

util.inspect(box);
// "Box< true >" :سيُعاد

تعيد الدوال [util.inspect.custom](depth, opts)‎ المخصَّصة عادةً سلسلةً نصيةً ولكن قد تعيد قيمة ذات نوع آخر ستُنسَّق وفقًا لذك عبر التابع util.inspect()‎.

const util = require('util');

const obj = { foo: 'this will not show up in the inspect() output' };
obj[util.inspect.custom] = (depth) => {
  return { bar: 'baz' };
};

util.inspect(obj);
// "{ bar: 'baz' }" :سيُعاد

الخاصية util.inspect.custom‎

أضيفت في الإصدار: v6.6.0. تمثِّل هذه الخاصية قيمةً من النوع symbol‎ يمكن استعمالها للتصريح عن دوال فحص مخصَّصة. اطلع على القسم «تخصيص دوال الفحص في الكائنات» في الأعلى.

الخاصية util.inspect.defaultOptions

أضيفت في الإصدار: v6.4.0. تسمح القيمة defaultOptions‎ بتخصيص القيم الافتراضية للخيارات التي يستعملها التابع util.inspect‎. هذه الخاصية مفيدةٌ جدًا لتوابع مثل console.log‎ أو util.format‎ والتي تستدعي التابع util.inspect‎ ضمنيًّا. يجب أن تُضبَط إلى كائنٍ يحوي خيارًا واحدًا أو أكثر من خيارات التابع util.inspect()‎. يمكن أيضًا ضبط خاصيات الكائن options‎ مباشرةً.

const util = require('util');
const arr = Array(101).fill(0);

console.log(arr); // logs the truncated array
util.inspect.defaultOptions.maxArrayLength = null;
console.log(arr); // logs the full array

util.isDeepStrictEqual(val1, val2)‎

أضيف في الإصدار: v9.0.0.

  • val1:‏ <any>
  • val2:‏ <any>

يعيد هذا التابع القيمة true‎ إن كان الوسيطان val1‎ و val2‎ متساويين بالعمق وبشكل صارم. خلا ذلك، سيُعيِد القيمة false‎.

اطلع على توثيق التابع assert.deepStrictEqual()‎ لمزيد من المعلومات حول التساوي بالعمق وبشكل صارم.

util.promisify(original)‎

أضيف في الإصدار: v8.0.0.

يأخذ هذا التابع دالةً تتبع نمط رد النداء «الخطأ أولًا» (error-first callback)، مثل أن تأخذ رد النداء ‎(err, value) => …‎ كآخر وسيط، ثم يعيد النسخة التي تعيد وعودًا (promises) من تلك الدالة.

const util = require('util');
const fs = require('fs');

const stat = util.promisify(fs.stat);
stat('.').then((stats) => {
  // `stats` افعل شيئًا مع
}).catch((error) => {
  // عالج الخطأ
});

أو يمكن بشكل مكافئ استعمال async function‎:

const util = require('util');
const fs = require('fs');

const stat = util.promisify(fs.stat);

async function callStat() {
  const stats = await stat('.');
  console.log(`This directory is owned by ${stats.uid}`);
}

إن كانت الخاصية original[util.promisify.custom]‎ موجودةً، فسيعيد التابع promisify‎ قيمتها. اطلع على الفقرة «دوال الوعود المخصصة» في الأسفل. يفترض التابع promisify()‎ أنَّ الوسيط original‎ هو دالةٌ يمرَّر رد نداءٍ كآخر وسيط إليها في جميع الحالات. إن لم يكن الوسيط original‎ دالةً، فسيرمي التابع promisify()‎ خطأً. أمَّا إن كان الوسيط original‎ دالةً ولكن لم يكن آخر وسيط فيه رد النداء «الخطأ أولًا»، فإنَّه لا يزال بالإمكان تمرير رد النداء «الخطأ أولًا» كآخر وسيط لها.

دوال الوعود المخصصة

استعمال الخاصية util.promisify.custom‎ يؤدي إلى استبدال القيمة المعادة للتابع util.promisify():

const util = require('util');

function doSomething(foo, callback) {
  // ...
}

doSomething[util.promisify.custom] = (foo) => {
  return getPromiseSomehow();
};

const promisified = util.promisify(doSomething);
console.log(promisified === doSomething[util.promisify.custom]);
// 'true' :سيُطبَع

يمكن أن يكون ذلك مفيدٌ في الحالات التي لا تتبع فيها الدالة الأصلية الصيغة القياسية لأخذ رد النداء «الخطأ أولًا» كآخر وسيط. على سبيل المثال، مع دالة تأخذ الوسائط (foo, onSuccessCallback, onErrorCallback)‎:

doSomething[util.promisify.custom] = (foo) => {
  return new Promise((resolve, reject) => {
    doSomething(foo, resolve, reject);
  });
};

إن عُرَّفت الخاصية promisify.custom‎ ولم تكن دالةً، فسيرمي التابع promisify()‎ خطأً.

الخاصية util.promisify.custom‎

أضيف في الإصدار: v8.0.0.

تمثِّل هذه الخاصية رمزًا (symbol) يمكن استعماله للتصريح عن متغيرات الوعود المخصصة (custom promisified variants) للدوال.

الصنف util.TextDecoder‎

أضيف في الإصدار: v8.3.0.

يعدُّ هذا الصنف تنفيذًا للواجهة TextDecoder البرمجية للترميز القياسي المتوافق مع المعيار WHATWG.

const decoder = new TextDecoder('shift_jis');
let string = '';
let buffer;
while (buffer = getNextChunkSomehow()) {
  string += decoder.decode(buffer, { stream: true });
}
string += decoder.decode(); // نهاية المجرى

الترميزات المدعومة المتوافقة مع WHATWG

وفقًا للترميز القياسي المتوافق مع WHATWG، الترميزات المدعومة من قِبَل الواجهة TextDecoder‎ البرمجية مدرجةٌ في الجدوال الآتي. قد يُستعمَل اسمٌ بديلٌ واحدٌ أو أكثر لكل ترميز من هذه الترميزات.

تدعم إعدادات بُنيَات Node.js المختلفة مجموعات مختلفة للترميزات. لمَّا كانت المجموعة الأساسية للترميزات مدعومةً حتى في بنيات Node.js التي تُبنَى دون تفعيل ICU، فإنَّه يتوافر دعمٌ لبعض الترميزات عندما تبنَى Node.js مع تفعيل ICU واستعمال بيانات ICU الكاملة فقط (اطلع على هذه الصفحة لمزيد من المعلومات).

الترميزات المدعومة دون تفعيل ICU

الترميز الأسماء البديلة
'utf-8' 'Unicode-1-1-utf-8'، و 'utf8'
'utf-16le' 'utf-16'

الترميزات المدعومة بشكل افتراضي (مع تفعيل ICU)

الترميز الأسماء البديلة
'utf-8' 'unicode-1-1-utf-8'، و 'utf8'
'utf-16le' 'utf-16'
'utf-16be'

الترميزات التي تتطلب بيانات ICU الكاملة

الترميز الأسماء البديلة
'ibm866' '866'، و 'cp866'، و 'csibm866'
'iso-8859-2' 'csisolatin2'، و 'iso-ir-101'، و 'iso8859-2'، و 'iso88592'، و 'iso_8859-2'، و 'iso_8859-2:1987'، و 'l2'، و 'latin2'
'iso-8859-3' 'csisolatin3'، و 'iso-ir-109'، و 'iso8859-3'، و 'iso88593'، و 'iso_8859-3'، و 'iso_8859-3:1988'، و 'l3'، و 'latin3'
'iso-8859-4' 'csisolatin4'، و 'iso-ir-110'، و 'iso8859-4'، و 'iso88594'، و 'iso_8859-4'، و 'iso_8859-4:1988'، و 'l4'، و 'latin4'
'iso-8859-5' 'csisolatincyrillic'، و 'cyrillic'، و 'iso-ir-144'، و 'iso8859-5'، و 'iso88595'، و 'iso_8859-5'، و 'iso_8859-5:1988'
'iso-8859-6' 'arabic'، و 'asmo-708'، و 'csiso88596e'، و 'csiso88596i'، و 'csisolatinarabic'، و 'ecma-114'، و 'iso-8859-6-e'، و 'iso-8859-6-i'، و 'iso-ir-127'، و 'iso8859-6'، و 'iso88596'، و 'iso_8859-6'، و 'iso_8859-6:1987'
'iso-8859-7' 'csisolatingreek'، و 'ecma-118'، و 'elot_928'، و 'greek'، و 'greek8'، و 'iso-ir-126'، و 'iso8859-7'، و 'iso88597'، و 'iso_8859-7'، و 'iso_8859-7:1987'، و 'sun_eu_greek'
'iso-8859-8' 'csiso88598e'، و 'csisolatinhebrew'، و 'hebrew'، و 'iso-8859-8-e'، و 'iso-ir-138'، و 'iso8859-8'، و 'iso88598'، و 'iso_8859-8'، و 'iso_8859-8:1988'، و 'visual'
'iso-8859-8-i' 'csiso88598i'، و 'logical'
'iso-8859-10' 'csisolatin6'، و 'iso-ir-157'، و 'iso8859-10'، و 'iso885910'، و 'l6'، و 'latin6'
'iso-8859-13' 'iso8859-13'، و 'iso885913'
'iso-8859-14' 'iso8859-14'، و 'iso885914'
'iso-8859-15' 'csisolatin9'، و 'iso8859-15'، و 'iso885915'، و 'iso_8859-15'، و 'l9'
'koi8-r' 'cskoi8r'، و 'koi'، و 'koi8'، و 'koi8_r'
'koi8-u' 'koi8-ru'
'macintosh' 'csmacintosh'، و 'mac'، و 'x-mac-roman'
'windows-874' 'dos-874'، و 'iso-8859-11'، و 'iso8859-11'، و 'iso885911'، و 'tis-620'
'windows-1250' 'cp1250'، و 'x-cp1250'
'windows-1251' 'cp1251'، و 'x-cp1251'
'windows-1252' 'ansi_x3.4-1968'، و 'ascii'، و 'cp1252'، و 'cp819'، و 'csisolatin1'، و 'ibm819'، و 'iso-8859-1'، و 'iso-ir-100'، و 'iso8859-1'، و 'iso88591'، و 'iso_8859-1'، و 'iso_8859-1:1987'، و 'l1'، و 'latin1'، و 'us-ascii'، و 'x-cp1252'
'windows-1253' 'cp1253'، و 'x-cp1253'
'windows-1254' 'cp1254'، و 'csisolatin5'، و 'iso-8859-9'، و 'iso-ir-148'، و 'iso8859-9'، و 'iso88599'، و 'iso_8859-9'، و 'iso_8859-9:1989'، و 'l5'، و 'latin5'، و 'x-cp1254'
'windows-1255' 'cp1255'، و 'x-cp1255'
'windows-1256' 'cp1256'، و 'x-cp1256'
'windows-1257' 'cp1257'، و 'x-cp1257'
'windows-1258' 'cp1258'، و 'x-cp1258'
'x-mac-cyrillic' 'x-mac-ukrainian'
'gbk' 'chinese'، و 'csgb2312'، و 'csiso58gb231280'، و 'gb2312'، و 'gb_2312'، و 'gb_2312-80'، و 'iso-ir-58'، و 'x-gbk'
'gb18030'
'big5' 'big5-hkscs'، و 'cn-big5'، و 'csbig5'، و 'x-x-big5'
'euc-jp' 'cseucpkdfmtjapanese'، و 'x-euc-jp'
'iso-2022-jp' 'csiso2022jp'
'shift_jis' 'csshiftjis'، و 'ms932'، و 'ms_kanji'، و 'shift-jis'، و 'sjis'، و 'windows-31j'، و 'x-sjis'
'euc-kr' 'cseuckr'، و 'csksc56011987'، و 'iso-ir-149'، و 'korean'، و 'ks_c_5601-1987'، و 'ks_c_5601-1989'، و 'ksc5601'، و 'ksc_5601'، و 'windows-949'

الترميز 'iso-8859-16' المدرج في الترميز القياسي المتوافق مع WHATWG غير مدعوم.

new TextDecoder([encoding[, options]])‎

  • encoding:‏ <string> يعرِّف الترميز الذي تدعمه النسخة TextDecoder‎. القيمة الافتراضية هي: 'utf-8'.
  • options:‏ <Object>
    • fatal:‏ <boolean> قيمة منطقية تكون true‎ إذا كان فشل عملية فك الترميز فادحًا وخطيرًا (fatal). هذا الخيار مدعومٌ عندما يكون ICU مفعلًا فقط (اطلع على هذه الصفحة لمزيد من المعلومات). القيمة الافتراضية هي: false‎.
    • ignoreBOM:‏ <boolean> قيمة منطقية إن كانت true‎، سيتضمَّن الكائن TextDecoder‎ علامة ترتيب البايت (byte order mark) في البيانات الناتجة عن فك الترميز. أمَّا عندما تكون قيمة هذا الخيار false‎، ستُحذَف علامة ترتيب البايت من المخرجات. يستعمَل هذا الخيار عندما يكون الوسيط encoding‎ هو إمَّا 'utf-8'، أو 'utf-16be'، أو 'utf-16le'. القيمة الافتراضية هي: false‎.

تنشئ هذه الدالة نسخةً جديدةً من الصنف TextDecoder‎. قد يحدِّد الوسيط encoding‎ أحد الترميزات المدعومة أو الأسماء البديلة لها.

textDecoder.decode([input[, options]])‎

  • input:‏ <ArrayBuffer‎> | <DataView> | <TypedArray> نسخةٌ من ArrayBuffer‎، أو DataView‎، أو TypedArray‎ تحوي البيانات المرمَّزة.
  • options:‏ <Object>
    • stream:‏ <boolean> قيمة منطقية تكون true‎ إن كان يتوقع وجود أجزاء إضافية من البيانات. القيمة الافتراضية هي: false‎.
  • القيم المعادة: <string>

يفك هذا التابع البيانات المعطاة في الترميز input‎ ثمَّ يعيدها في سلسلة نصية. إن كانت قيمة الخيار options.stream‎ هي true‎، فستُخزَّن أية سلسلة غير مكتملة من البايتات توجد في نهاية المدخلات input‎ داخليًّا ثم تُصدَر بعد الاستدعاء التالي للتابع textDecoder.decode()‎. إن كانت قيمة الخيار textDecoder.fatal‎ هي true‎، فسيؤدي حصول أي خطأ أثناء عملية فك الترميز إلى رمي الخطأ TypeError‎.

‎textDecoder.encoding

تمثِّل هذه الخاصية الترميز الذي تدعمه النسخة TextDecoder‎.

‎textDecoder.fatal

ستكون قيمة هذه الخاصية true‎ إن تمَّ رمي الخطأ TypeError‎ الناتج عن حصول أخطاء فادحة أثناء عملية فك الترميز.

‎textDecoder.ignoreBOM

ستكون قيمة هذه الخاصية هي true‎ إن كان ناتج عملية فك الترميز سيتضمَّن علامة ترتيب البايت (byte order mark).

الصنف util.TextEncoder

أضيف في الإصدار: v8.3.0.

يعدُّ هذا الصنف تنفيذًا للواجهة TextEncoder البرمجية للترميز القياسي المتوافق مع المعيار WHATWG.

const encoder = new TextEncoder();
const uint8array = encoder.encode('this is some data');

textEncoder.encode([input])‎

  • input‎:‏ النص المراد ترميزه. القيمة الافتراضية هي: سلسلة نصية فارغة.
  • القيم المعادة: <Uint8Array>

يرمِّز هذا التابع البيانات المعطاة في الوسيط input‎ بالترميز UTF-8 ثم يعيد كائنًا من النوع Uint8Array‎ يحوي البايتات المرمَّزة.

textEncoder.encoding‎

تمثِّل هذه الخاصية الترميز الذي تدعمه النسخة TextEncoder. تُضبَط إلى القيمة 'utf-8'.

util.types‎

أضيف في الإصدار: v10.0.0. يوفِّر util.types‎ عددًا من تحققات الأنواع (type checks) لمختلف أنواع الكائنات المضمَّنة (built-in objects) في اللغة. لا تفحص هذه التحققات، بشكل مخالف للمعامل instanceof‎ أو Object.prototype.toString.call(value)‎، خاصيات الكائن القابلة للوصول من طرف JavaScript (مثل فحص الخاصية prototype‎)، بل تجري عادةً استدعاءات زائدة داخل ++C. عمومًا، لا يقدِّم الناتج أي ضمانات عن ماهية نوع الخاصيات أو السلوك المتوقع لقيمةٍ ما في JavaScript. أكثر من يستفيد من هذه التحقُّقات هم مطورو الإضافات الذين يفضلون إجراء التحقق من النوع في JavaScript.

util.types.isArgumentsObject(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ كائنًا من النوع arguments‎.

function foo() {
  util.types.isArgumentsObject(arguments);  // Returns true
}

util.types.isArrayBuffer(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من النوع ArrayBuffer‎. هذا لا يتضمن النسخ SharedArrayBuffer‎. يفضَّل عادةً فحص كلاهما. انظر إلى الدالة util.types.isAnyArrayBuffer()‎ من أجل ذلك.

util.types.isArrayBuffer(new ArrayBuffer());  // true
util.types.isArrayBuffer(new SharedArrayBuffer());  // false

util.types.isAsyncFunction(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ دالةً غير متزامنةً (async function). انتبه إلى أنَّ ناتج هذا التابع يعكس ما يراه محرِّك JavaScript؛ على وجه التحديد، قد لا تطابق القيمة المعادة الشيفرة المصدرية الأصلية إن استُعملَت الأداة transpilation.

util.types.isAsyncFunction(function foo() {});  // false
util.types.isAsyncFunction(async function foo() {});  // true

util.types.isBigInt64Array(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً من النوع BigInt64Array‎.

util.types.isBigInt64Array(new BigInt64Array()); // true util.types.isBigInt64Array(new BigUint64Array()); // false

util.types.isBigUint64Array(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً من النوع BigUint64Array‎.

util.types.isBigUint64Array(new BigInt64Array());   // false
util.types.isBigUint64Array(new BigUint64Array());  // true

util.types.isBooleanObject(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ كائنًا من النوع boolean‎ (أنشئ عبر new Boolean()‎).

util.types.isBooleanObject(false);  // Returns false
util.types.isBooleanObject(true);   // false
util.types.isBooleanObject(new Boolean(false)); // true
util.types.isBooleanObject(new Boolean(true));  // true
util.types.isBooleanObject(Boolean(false)); // false
util.types.isBooleanObject(Boolean(true));  // false

util.types.isBoxedPrimitive(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ أيًّا من الكائنات الأساسية المغلفة (boxed primitive object)، مثل تلك التي أنشأت باستعمال new Boolean()‎، أو new String()‎، أو Object(Symbol())‎. تفحَّص المثال التالي:

util.types.isBoxedPrimitive(false); // false
util.types.isBoxedPrimitive(new Boolean(false)); // true
util.types.isBoxedPrimitive(Symbol('foo')); // false
util.types.isBoxedPrimitive(Object(Symbol('foo'))); // true
util.types.isBoxedPrimitive(Object(BigInt(5))); // true

util.types.isDataView(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من الصنف DataView‎.

const ab = new ArrayBuffer(20);
util.types.isDataView(new DataView(ab));  // true
util.types.isDataView(new Float64Array());  // false

انظر أيضًا التابع ArrayBuffer.isView()‎.

util.types.isDate(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنة من الصنف date‎.

util.types.isDate(new Date());  // true

util.types.isExternal(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ قيمةً أساسيَّةً من النوع External‎.

util.types.isFloat32Array(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنة من الصنف Float32Array‎.

util.types.isFloat32Array(new ArrayBuffer());  // false
util.types.isFloat32Array(new Float32Array());  // true
util.types.isFloat32Array(new Float64Array());  // false

util.types.isFloat64Array(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من الصنف Float64Array‎.

util.types.isFloat64Array(new ArrayBuffer());  // false
util.types.isFloat64Array(new Uint8Array());  // false
util.types.isFloat64Array(new Float64Array());  // true

util.types.isGeneratorFunction(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ دالةً مولدةً (generator function). انتبه إلى أنَّ ناتج هذا التابع يعكس ما يراه محرِّك JavaScript. على وجهة التحديد، قد لا تطابق القيمة المعادة الشيفرة المصدرية الأصلية إن استُعملَت الأداة transpilation.

util.types.isGeneratorFunction(function foo() {});  // false
util.types.isGeneratorFunction(function* foo() {});  // true

‎util.types.isGeneratorObject(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ كائنًا مولدًا (generator object) أعيد من دالة مولِّدة مضمَّنة. انتبه إلى أنَّ ناتج هذا التابع يعكس ما يراه محرِّك JavaScript. على وجهة التحديد، قد لا تطابق القيمة المعادة الشيفرة المصدرية الأصلية إن استُعملَت الأداة transpilation.

function* foo() {}
const generator = foo();
util.types.isGeneratorObject(generator);  // true

util.types.isInt8Array(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من الصنف Int8Array‎.

util.types.isInt8Array(new ArrayBuffer());  // false
util.types.isInt8Array(new Int8Array());  // true
util.types.isInt8Array(new Float64Array());  // false

‎util.types.isInt16Array(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من الصنف Int16Array‎.

util.types.isInt16Array(new ArrayBuffer());  // Returns false
util.types.isInt16Array(new Int16Array());  // Returns true
util.types.isInt16Array(new Float64Array());  // Returns false

util.types.isInt32Array(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من الصنف Int32Array‎.

util.types.isInt32Array(new ArrayBuffer());  // false
util.types.isInt32Array(new Int32Array());  // true
util.types.isInt32Array(new Float64Array());  // false

util.types.isMap(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من الصنف Map‎.

util.types.isMap(new Map());  // true

‎util.types.isMapIterator(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ مكرِّرًا (iterator) أعيد من نسخةٍ مضمَّنةٍ من الكائن Map‎.

const map = new Map();
util.types.isMapIterator(map.keys());  // true
util.types.isMapIterator(map.values());  // true
util.types.isMapIterator(map.entries());  // true
util.types.isMapIterator(map[Symbol.iterator]());  // true

util.types.isModuleNamespaceObject(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً من كائن وحدة مجال الأسماء (Module Namespace).

import * as ns from './a.js';

util.types.isModuleNamespaceObject(ns);  // true

util.types.isNativeError(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من الصنف Error‎.

util.types.isNativeError(new Error());  // true
util.types.isNativeError(new TypeError());  // true
util.types.isNativeError(new RangeError());  // true

util.types.isNumberObject(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ كائنًا من النوع Number‎ (أنشيء باستعمال new Number()‎).

util.types.isNumberObject(0);  // false
util.types.isNumberObject(new Number(0));   // true

util.types.isPromise(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ كائنًا من النوع Promise‎.

util.types.isPromise(Promise.resolve(42));  // true

util.types.isProxy(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً من الصنف Proxy‎.

const target = {};
const proxy = new Proxy(target, {});
util.types.isProxy(target);  // false
util.types.isProxy(proxy);  // true

‎util.types.isRegExp(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ كائنًا من النوع RegExp‎.

util.types.isRegExp(/abc/);  // true
util.types.isRegExp(new RegExp('abc'));  // true

util.types.isSet(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من الصنف Set‎.

util.types.isSet(new Set());  // true

util.types.isSetIterator(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ مكرِّرًا أعيد من النسخة Set‎ المضمَّنة.

const set = new Set();
util.types.isSetIterator(set.keys());  // true
util.types.isSetIterator(set.values());  // true
util.types.isSetIterator(set.entries());  // true
util.types.isSetIterator(set[Symbol.iterator]());  // true

util.types.isSharedArrayBuffer(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من الصنف SharedArrayBuffer‎. هذا لا يتضمَّن النُسَخ ArrayBuffer‎، لذا يفضَّل عادةً التحقق من كلاهما. اطلع على توثيق التابع util.types.isAnyArrayBuffer()‎ من أجل ذلك.

util.types.isSharedArrayBuffer(new ArrayBuffer());  // false
util.types.isSharedArrayBuffer(new SharedArrayBuffer());  // true

util.types.isStringObject(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ كائنًا من النوع string‎ (أنشئ مثلًا عبر new String()).

util.types.isStringObject('foo');  // false
util.types.isStringObject(new String('foo'));   // true

‎util.types.isSymbolObject(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ كائنًا من النوع Symbol‎ أُنشِيء عبر استدعاء Object()‎ مع الكائن Symbol‎ الأساسي.

const symbol = Symbol('foo');
util.types.isSymbolObject(symbol);  // false
util.types.isSymbolObject(Object(symbol));   // true

‎util.types.isTypedArray(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من النوع TypedArray‎.

util.types.isTypedArray(new ArrayBuffer());  // false
util.types.isTypedArray(new Uint8Array());  // true
util.types.isTypedArray(new Float64Array());  // true

انظر أيضًا التابع ArrayBuffer.isView()‎.

util.types.isUint8Array(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من النوع Uint8Array‎.

util.types.isUint8Array(new ArrayBuffer());  // false
util.types.isUint8Array(new Uint8Array());  // true
util.types.isUint8Array(new Float64Array());  // false

‎util.types.isUint8ClampedArray(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من النوع Uint8ClampedArray.

util.types.isUint8ClampedArray(new ArrayBuffer());  // false
util.types.isUint8ClampedArray(new Uint8ClampedArray());  // true
util.types.isUint8ClampedArray(new Float64Array());  // false

util.types.isUint16Array(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من النوع Uint16Array.

util.types.isUint16Array(new ArrayBuffer());  // false
util.types.isUint16Array(new Uint16Array());  // true
util.types.isUint16Array(new Float64Array());  // false

‎util.types.isUint32Array(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من النوع Uint32Array.

util.types.isUint32Array(new ArrayBuffer());  // false
util.types.isUint32Array(new Uint32Array());  // true
util.types.isUint32Array(new Float64Array());  // false

‎util.types.isWeakMap(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من النوع WeakMap.

util.types.isWeakMap(new WeakMap());  // true

util.types.isWeakSet(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من النوع WeakSet.

util.types.isWeakSet(new WeakSet());  // true

util.types.isWebAssemblyCompiledModule(value)‎

أضيف في الإصدار: v10.0.0.

  • value‎:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كانت القيمة value‎ نسخةً مضمَّنةً من النوع WebAssembly.Module‎.

const module = new WebAssembly.Module(wasmBuffer);
util.types.isWebAssemblyCompiledModule(module);  // Returns true

الواجهات البرمجية المهملة

أصبحت الواجهات البرمجية التالية مهملةً ولا يجب استخدامها مطلقًا بعد الآن. يجب على التطبيقات والوحدات التي تستعمل إحداها أن تستعيض عنها بالبديل المناسب.

util._extend(target, source)‎

أضيف في الإصدار: v0.7.5. أهمل منذ الإصدار: v6.0.0.

الاستقرار: 0-مهمل؛ استعمل التابع Object.assign() عوضًا عنه.

لم يُقصَد أن يُستعمَل التابع util._extend()‎ خارج وحدات Node.js الداخلية على الإطلاق. على أي حال، المجتمع هو من أوجده واستعمله.

أصبح هذا التابع مهملًا ويجب ألا يُستعمَل بعد الآن في أي شيفرة. تأتي JavaScript مع وظائف مدمجة مشابهة عبر Object.assign().

‎util.debug(string)‎

أضيف في الإصدار: v0.3.0. أهمل منذ الإصدار: v0.11.3.

الاستقرار: 0-مهمل؛ استعمل التابع console.error() عوضًا عنه.

  • string:‏ <string> الرسالة المراد طباعتها على مجرى الخطأ القياسي (stderr).

سلفٌ مهملٌ للتابع console.error.

util.error([...strings])‎

أضيف في الإصدار: v0.3.0. أهمل منذ الإصدار: 0.11.3.

الاستقرار: 0-مهمل؛ استعمل التابع console.error()‎ عوضًا عنه.

  • ...strings:‏ <string> الرسالة المراد طباعتها على مجرى الخطأ القياسي (stderr).

سلفٌ مهملٌ للتابع console.error‎.

util.isArray(object)‎

أضيف في الإصدار: v0.6.0. أهمل منذ الإصدار: v4.0.0.

الاستقرار: 0-مهمل؛ استعمل التابع Array.isArray() عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعدُّ هذا التابع اسمًا بديلًا للتابع Array.isArray()‎.

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى مصفوفةً. خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

util.isArray([]);
// Returns: true
util.isArray(new Array());
// Returns: true
util.isArray({});
// Returns: false

util.isBoolean(object)‎

أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.

الاستقرار: 0-مهمل؛ استعمل typeof value === 'boolean'‎ عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى قيمةً منطقيةً (boolean). خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

util.isBoolean(1);      // false
util.isBoolean(0);      // false
util.isBoolean(false); // true

util.isBuffer(object)‎

أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.4.0. الاستقرار: 0-مهمل؛ استعمل التابع Buffer.isBuffer()‎ عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى من النوع Buffer‎. خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

util.isBuffer({ length: 0 }); // false
util.isBuffer([]); // false
util.isBuffer(Buffer.from('hello world')); // true

util.isDate(object)‎

أضيف في الإصدار: v0.6.0. أهمل منذ الإصدار: v4.0.0. الاستقرار: 0-مهمل؛ استعمل التابع util.types.isDate()‎ عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى من النوع Date‎.

const util = require('util');

util.isDate(new Date()); // true
util.isDate(Date()); // false (سلسلةً نصيةً 'new' تعيد دون)
util.isDate({}); // false

util.isError(object)‎

أضيف في الإصدار: v0.6.0. أهمل منذ الإصدار: v4.0.0. الاستقرار: 0-مهمل؛ استعمل التابع util.types.isNativeError()‎ عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى من النوع Error. خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

util.isError(new Error()); // true
util.isError(new TypeError()); // true
util.isError({ name: 'Error', message: 'an error occurred' }); // false

انتبه إلى أنَّ هذا التابع يعتمد على السلوك Object.prototype.toString()‎. يحتمل الحصول على نتيجة خطأ عندما يتحكم الوسيط object‎ في ‎@@toStringTag‎.

const util = require('util');
const obj = { name: 'Error', message: 'an error occurred' };

util.isError(obj); // false
obj[Symbol.toStringTag] = 'Error';
util.isError(obj); // true

util.isFunction(object)‎

أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0. الاستقرار: 0-مهمل؛ استعمل typeof value === 'function'‎ عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى دالةً. خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

function Foo() {}
const Bar = () => {};

util.isFunction({}); // false
util.isFunction(Foo); // true
util.isFunction(Bar); // true

util.isNull(object)‎

أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0. الاستقرار: 0-مهمل؛ استعمل value === null عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى يساوي القيمة null‎ بشكل صارم (strictly). خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

util.isNull(0); // false
util.isNull(undefined); // false
util.isNull(null); // true

util.isNullOrUndefined(object)‎

أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0. الاستقرار: 0-مهمل؛ استعمل value === undefined || value === null‎ عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى هو null‎ أو undefined‎. خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

util.isNullOrUndefined(0); // false
util.isNullOrUndefined(undefined); // true
util.isNullOrUndefined(null); // true

util.isNumber(object)‎

أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.

الاستقرار: 0-مهمل؛ استعمل typeof value === 'number'‎ عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى عددًا (Number). خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

util.isNumber(false); // false
util.isNumber(Infinity); // true
util.isNumber(0); // true
util.isNumber(NaN); // true

util.isObject(object)‎

أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.

الاستقرار: 0-مهمل؛ استعمل value !== null && typeof value === 'object'‎ عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى هو من النوع Object‎ حتمًا وليس من دالةً (Function، رغم أنَّ الدوال هي كائنات في JavaScript). خلا ذلك، ستعيد القيمة false‎.

const util = require('util');

util.isObject(5); // false
util.isObject(null); // false
util.isObject({}); // true
util.isObject(() => {}); // false

util.isPrimitive(object)‎

أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.

الاستقرار: 0-مهمل؛ استعمل ‎(typeof value !== 'object' && typeof value !== 'function') || value === null عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى أحدَ الأنواع الأساسية (primitive type). خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

util.isPrimitive(5); // true
util.isPrimitive('foo'); // true
util.isPrimitive(false); // true
util.isPrimitive(null); // true
util.isPrimitive(undefined); // true
util.isPrimitive({}); // false
util.isPrimitive(() => {}); // false
util.isPrimitive(/^$/); // false
util.isPrimitive(new Date()); // false

util.isRegExp(object)‎

أضيف في الإصدار: v0.6.0. أهمل منذ الإصدار: v4.0.0. الاستقرار: 0-مهمل.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى من النوع RegExp‎. خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

util.isRegExp(/some regexp/); // true
util.isRegExp(new RegExp('another regexp')); // true
util.isRegExp({}); // false

‎util.isString(object)‎

أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.

الاستقرار: 0-مهمل؛ استعمل ‎typeof value === 'string'‎ عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى سلسلة نصية (String). خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

util.isString(''); // true
util.isString('foo'); // true
util.isString(String('foo')); // true
util.isString(5); // false

util.isSymbol(object)‎

أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.

الاستقرار: 0-مهمل؛ استعمل typeof value === 'symbol'‎ عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى من النوع Symbol‎. خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

util.isSymbol(5); // false
util.isSymbol('foo'); // false
util.isSymbol(Symbol('foo')); // true

‎util.isUndefined(object)‎

أضيف في الإصدار: v0.11.5. أهمل منذ الإصدار: v4.0.0.

الاستقرار: 0-مهمل؛ استعمل value === undefined عوضًا عنه.

  • object:‏ <any>
  • القيم المعادة: <boolean>

يعيد هذا التابع القيمة true‎ المنطقية إن كان الكائن object المعطى هو undefined‎. خلا ذلك، سيعيد القيمة false‎.

const util = require('util');

const foo = undefined;
util.isUndefined(5); // false
util.isUndefined(foo); // true
util.isUndefined(null); // false

util.log(string)‎

أضيف في الإصدار: v0.3.0. أهمل منذ الإصدار: v6.0.0. الاستقرار: 0-مهمل؛ استعمل وحدة مُقدَّمة من طرف ثالث عوضًا عنه.

يطبع التابع util.log()‎ السلسلة النصية string‎ المعطاة على مجرى الخرج القياسي (stdout) مع إضافة بصمة وقت.

const util = require('util');

util.log('Timestamped message.');

util.print([...strings])‎

أضيف في الإصدار: v0.3.0. أهمل منذ الإصدار: v0.11.3.

الاستقرار: 0-مهمل؛ استعمل التابع console.log()‎ عوضًا عنه.

سلفٌ مهملٌ للتابع console.log‎.

util.puts([...strings])‎

أضيف في الإصدار: v0.11.3. أهمل منذ الإصدار: v0.11.3.

الاستقرار: 0-مهمل؛ استعمل التابع ‎console.log()‎ عوضًا عنه.

سلفٌ مهملٌ للتابع console.log‎.

مصادر