Cette fonction, proposition pour ECMAScript 6 (Harmony), est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.
Résumé
La méthode codePointAt() renvoie un entier positif qui correspond au codet UTF-16 du caractère de la chaîne à la position donnée.
Syntaxe
str.codePointAt(pos)
Paramètres
pos- La position de l'élément dans la chaîne de caractères dont on souhaite obtenir la valeur du codet.
Description
S'il n'y a pas d'élément à la position donnée, la valeur renvoyée sera undefined. Si ce n'est pas un élément représenté sur deux demi-codets (surrogate pair) UTF-16 et qui commence à pos, le codet de l'élément à l'indice pos est renvoyé.
Exemple
Utiliser codepointAt()
'ABC'.codePointAt(1); // 66 '\uD800\uDC00'.codePointAt(0); // 65536 'XYZ'.codePointAt(42); // undefined
Prothèse d'émulation (polyfill)
Le fragment de code suivant permet d'ajouter la méthode codePointAt() pour les chaînes de caractères (String). En effet, cette méthode fait partie de ECMAScript 6 et certains navigateurs peuvent ne pas proposer cette fonction nativement.
/*! http://mths.be/codepointat v0.1.0 by @mathias */
if (!String.prototype.codePointAt) {
(function() {
'use strict'; // utilisé pour utiliser `apply`/`call` avec `undefined`/`null`
var codePointAt = function(position) {
if (this == null) {
throw TypeError();
}
var string = String(this);
var size = string.length;
// `on transforme en entier`
var index = position ? Number(position) : 0;
if (index != index) { // mieux que `isNaN`
index = 0;
}
// on regarde si on est en dehors de la chaîne:
if (index < 0 || index >= size) {
return undefined;
}
// On récupère le premier codet
var first = string.charCodeAt(index);
var second;
if ( // on vérifie que ce n'est pas le début d'une surrogate pair
first >= 0xD800 && first <= 0xDBFF && // high surrogate
size > index + 1 // il y a un codet qui suit
) {
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;
}
}());
}
Spécifications
| Spécification | Statut | Commentaires |
|---|---|---|
| ECMAScript 6 (ECMA-262) La définition de 'String.prototype.codePointAt' dans cette spécification. |
Draft | Définition initiale. |
Compatibilité des navigateurs
| Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Support simple | 41 | 29 (29) | 11 pour Windows 10 Preview | Pas de support | Pas de support |
| Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Support simple | Pas de support | Pas de support | 29.0 (29) | Pas de support | Pas de support | Pas de support |