1

这是为自定义字符代码返回正确代码的好方法吗

String.prototype._charCodeAt = String.prototype.charCodeAt;
String.prototype.charCodeAt = function( i , keycodes ) {
    if( keycodes !== 'undefined' ) {
        for( var j = 0; j < keycodes.length; j++ ) {
            if( this[i] === keycodes[j].char ) {
                return keycodes[j].code;
            }
        }
    } else {
        return this._charCodeAt( i );
    }
}

Keycodes 是这样存储值的数组

[
    ...
    { "char" : "ä" , "code" : 132 },
    { "char" : "à" , "code" : 133 },
    { "char" : "å" , "code" : 134 },
    ...
];

默认情况下,javascript 会为“特殊字符”返回错误的值。
这段代码是否足够?

4

1 回答 1

1

您可以简单地使用一个对象:

var codes = {
    "ä": 132,
    "à": 133,
    "å": 134
};

function customCharCodeAt( string, index ) {
    return codes[string.charAt(index)] || string.charCodeAt(index);
}

您不应覆盖正常charCodeAt函数,因为它确实返回正确的和预期的值。

于 2012-06-03T07:58:05.873 回答