String.prototype.codePointAt()
< JavaScript | String
الدالة String.prototype.codePointAt()
تُعيد عددًا صحيحًا موجبًا الذي يُمثِّل رمز يونيكود للمحرف الموجود في الموضع المعيّن.
البنية العامة
str.codePointAt(index)
index
موضع العنصر من السلسلة النصية التي نريد معرفة رمز يونيكود الخاص بها.
القيمة المعادة
قيمة عددية تُمثِّل رمز المحرف الموجود عند الفهرس المُحدَّد، وإذا كانت قيمة الوسيط index
غير محددة فستُعاد القيمة undefined
.
أمثلة
استخدام الدالة codePointAt()
'ABC'.codePointAt(1); // 66
'\uD800\uDC00'.codePointAt(0); // 65536
'XYZ'.codePointAt(42); // undefined
تعويض نقص دعم المتصفحات
الشيفرة الآتية تُضيف على الكائن String
وتُعرِّف الدالة codePointAt
كما هو مُحدَّد في مواصفة ECMAScript 2015 للمتصفحات التي لا تدعمها بعد:
/*! http://mths.be/codepointat v0.1.0 by @mathias */
if (!String.prototype.codePointAt) {
(function() {
'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
var codePointAt = function(position) {
if (this == null) {
throw TypeError();
}
var string = String(this);
var size = string.length;
// `ToInteger`
var index = position ? Number(position) : 0;
if (index != index) { // better `isNaN`
index = 0;
}
// Account for out-of-bounds indices:
if (index < 0 || index >= size) {
return undefined;
}
// Get the first code unit
var first = string.charCodeAt(index);
var second;
if ( // check if it’s the start of a surrogate pair
first >= 0xD800 && first <= 0xDBFF && // high surrogate
size > index + 1 // there is a next code unit
) {
second = string.charCodeAt(index + 1);
if (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate
// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
}
}
return first;
};
if (Object.defineProperty) {
Object.defineProperty(String.prototype, 'codePointAt', {
'value': codePointAt,
'configurable': true,
'writable': true
});
} else {
String.prototype.codePointAt = codePointAt;
}
}());
}
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | 41 | 29 | غير مدعومة | 28 | 10 |
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).