الفرق بين المراجعتين لصفحة: «Node.js/util»
جميل-بيلوني (نقاش | مساهمات) إضافة محتويات الصفحة. |
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
||
(مراجعتان متوسطتان بواسطة مستخدم واحد آخر غير معروضتين) | |||
سطر 1: | سطر 1: | ||
صُمِّمَت الوحدة <code>util</code> بشكل أساسي لتلبية احتياجات واجهات Node.js البرمجيّة الداخليّة. هذا لا يمنَع كون الأدوات، التي توفرها الوحدة، مفُيدةً للتطبيقات ولمطوري الوحدات البرمجيّة. يمكنك استيراد الوحدة والبدء باستخدامها عبر تنفيذ:<syntaxhighlight lang="javascript">const util = require('util'); | |||
<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) ويعيد دالةً تتبع نمط دالة رد النداء | يأخُذ التابِع الدالة 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>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) => { | ||
// | // Error غُلِّفت مع الخطأ ،'null' مع القيمة Promise عندما رُفِض الكائن | ||
// | // '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>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- | |||
إن استعملت إمَّا الراية <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>[[Node.js/cli#.E2.80.8E--throw-deprecation|--throw-deprecation]]</code> أو ضُبطَت الخاصية <code>process.throwDeprecation</code> إلى القيمة <code>true</code>، فسيُرمَى استثناءٌ عندما تستدعَى الدالة المهملة. | |||
* <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>%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' | </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>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'); | |||
للسهولة، سيكون الباني <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!'); // | 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> == | ||
التغييرات | {| 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>. | |||
* | * القيم المعادة: [[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 { | |||
القيم المعادة: [[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>]] | ||
يأخذ هذا التابع دالةً تتبع نمط رد النداء | يأخذ هذا التابع دالةً تتبع نمط رد النداء «<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> | |||
<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=== | ||
وفقًا للترميز القياسي المتوافق مع | وفقًا [https://encoding.spec.whatwg.org/ للترميز القياسي المتوافق مع WHATWG]، الترميزات المدعومة من قِبَل الواجهة <code>TextDecoder</code> البرمجية مدرجةٌ في الجدوال الآتي. قد يُستعمَل اسمٌ بديلٌ واحدٌ أو أكثر لكل ترميز من هذه الترميزات. | ||
تدعم إعدادات بُنيَات 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' | |<code>'ibm866'</code> | ||
'iso-8859-2' | |<code>'866'</code>، و <code>'cp866'</code>، و <code>'csibm866'</code> | ||
'csisolatin2' | |- | ||
'iso-8859-3' | |<code>'iso-8859-2'</code> | ||
'csisolatin3' | |<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' | |<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' | |- | ||
|<code>'iso-8859-4'</code> | |||
'arabic' | |<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' | |- | ||
|<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' | |- | ||
|<code>'iso-8859-6'</code> | |||
'csiso88598i' | |<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> | ||
|- | |||
'csisolatin6' | |<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' | |- | ||
'iso-8859-14' | |<code>'iso-8859-8'</code> | ||
'iso8859-14' | |<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' | |<code>'iso-8859-8-i'</code> | ||
'koi8-r' | |<code>'csiso88598i'</code>، و <code>'logical'</code> | ||
'cskoi8r' | |- | ||
|<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' | |<code>'iso-8859-13'</code> | ||
'windows-874' | |<code>'iso8859-13'</code>، و <code>'iso885913'</code> | ||
'dos-874' | |- | ||
'windows-1250' | |<code>'iso-8859-14'</code> | ||
'cp1250' | |<code>'iso8859-14'</code>، و <code>'iso885914'</code> | ||
'windows-1251' | |- | ||
'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' | |- | ||
'windows-1253' | |<code>'koi8-r'</code> | ||
'cp1253' | |<code>'cskoi8r'</code>، و <code>'koi'</code>، و <code>'koi8'</code>، و <code>'koi8_r'</code> | ||
'windows-1254' | |- | ||
'cp1254' | |<code>'koi8-u'</code> | ||
'windows-1255' | |<code>'koi8-ru'</code> | ||
'cp1255' | |- | ||
'windows-1256' | |<code>'macintosh'</code> | ||
'cp1256' | |<code>'csmacintosh'</code>، و <code>'mac'</code>، و <code>'x-mac-roman'</code> | ||
'windows-1257' | |- | ||
'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-mac-cyrillic' | |<code>'windows-1250'</code> | ||
'x-mac-ukrainian' | |<code>'cp1250'</code>، و <code>'x-cp1250'</code> | ||
|- | |||
'chinese' | |<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' | |- | ||
'euc-jp' | |<code>'windows-1253'</code> | ||
'cseucpkdfmtjapanese' | |<code>'cp1253'</code>، و <code>'x-cp1253'</code> | ||
'iso-2022-jp' | |- | ||
'csiso2022jp' | |<code>'windows-1254'</code> | ||
|<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' | |- | ||
'euc-kr' | |<code>'windows-1255'</code> | ||
'cseuckr' | |<code>'cp1255'</code>، و <code>'x-cp1255'</code> | ||
|- | |||
الترميز <code>'iso-8859-16' | |<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>options</code>: [[JavaScript/Object|<Object>]] | |<code>'windows-1257'</code> | ||
** <code>fatal</code>: [[JavaScript/Boolean|<boolean>]] قيمة منطقية تكون <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>'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/ | *<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. | ==الصنف <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>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 | ===<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()); | util.types.isBigInt64Array(new BigInt64Array()); // true util.types.isBigInt64Array(new BigUint64Array()); // false | ||
util.types.isBigInt64Array(new BigUint64Array()); | </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) | يعيد هذا التابع القيمة <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. | *<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 | أضيف هذا التابع. |
constructor
: <Function>superConstructor
: <Function>
استعمال التابع 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>
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الوسيطان val1
و val2
متساويين بالعمق وبشكل صارم. خلا ذلك، سيُعيِد القيمة false
.
اطلع على توثيق التابع assert.deepStrictEqual()
لمزيد من المعلومات حول التساوي بالعمق وبشكل صارم.
util.promisify(original)
أضيف في الإصدار: v8.0.0.
original
: <Function>- القيم المعادة: <Function>
يأخذ هذا التابع دالةً تتبع نمط رد النداء «الخطأ أولًا» (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
أضيف في الإصدار: 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-مهمل؛ استعمل وحدة مُقدَّمة من طرف ثالث عوضًا عنه.
string
: <string>
يطبع التابع 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
.