الفرق بين المراجعتين ل"JavaScript/Object/values"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(لا فرق)

مراجعة 16:27، 26 نوفمبر 2017

الدالة Object.values()‎ تُعيد مصفوفةً للخاصيات القابلة للإحصاء والتابعة لأحد الكائنات مباشرةً، وبنفس الترتيب الذي توفِّره حلقة التكرار for...in (والفرق بين هذه الدالة وحلقة التكرار هو أنَّ حلقة التكرار for...in ستمرّ على الخاصيات القابلة للإحصاء والموجودة في سلسلة prototype، ولن تقتصر على الخاصيات التابعة للكائن مباشرةً).

البنية العامة

Object.values(obj)

obj

الكائن الذي نريد الحصول على قيم خاصياته القابلة للإحصاء.

القيمة المعادة

مصفوفة تُمثِّل قيم جميع الخاصيات القابلة للإحصاء والتابعة مباشرةً للكائن المعطي.

الوصف

لاحظ أنَّه في معيار ECMAScript 5 كان استعمال هذه الدالة على وسيطٍ ليس كائنًا (أي قيمةً أوليةً) سيؤدي إلى رمي TypeError، لكن بدءًا من ECMAScript 2015 (أي ES6) فستُعامل الوسائط التي لا تُمثِّل كائنات على أنها كائنات:

Object.values('foo');
// TypeError: "foo" is not an object (ES5)

Object.values('foo');
// ["f", "o", "o"]                   (ES2015)

أمثلة

مثال عن استخدام هذه الدالة على كائن عادي:

var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]

مثال عن استخدام هذه الدالة على كائنٍ شبيهٍ بالمصفوفات:

var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(obj)); // ['a', 'b', 'c']

مثال عن كائنٍ شبيهٍ بالمصفوفات لكن مفاتيحه ذاتُ ترتيبٍ عشوائي:

var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.values(an_obj)); // ['b', 'c', 'a']

لاحظ أنَّ هذه الدالة لن تُعيد الخاصية getFoo، ذلك لأنَّها غير قابلة للإحصاء (انظر صفحة الدالة Object.create()‎):

var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
my_obj.foo = 'bar';
console.log(Object.values(my_obj)); // ['bar']

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي 54 47 غير مدعومة مدعومة 10.1

على النقيض من متصفح IE، يدعم متصفح Edge هذه الميزة.

مصادر ومواصفات