String.prototype.codePointAt()‎

من موسوعة حسوب
اذهب إلى: تصفح، ابحث

الدالة 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

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