ExtはString類の拡張を詳しく分析します.
4750 ワード
元のStringクラス:
length属性、静的方法String.from CharCode()、17の例示的な方法.(ここの呼び方は全部分かりやすい方式で、厳密にOOという意味ではないです.)
17の例示的な方法の簡単な表:
1、 charAt()
2、 charCodeAt():文字列で指定された位置の文字コード(Unicoodeコード値)を返します.
3、 concat():1つ以上の値を文字列に接続する
4、 indexOf()
5、 lastIndexOf()
6、 locale Compare():ローカライズされた順序で文字列を比較します.
7、 match():正規表現でパターンマッチングを行う
8、 replace()
9、 search():検索文字列で正規表現にマッチするサブストリング
10、slice():文字列のサブストリングを返します.
11、スプリット()
12、substr()
13、substring()
14、タワーベース()
15、toString()
16、 toUpperCase()
17、valueOf()
ExtのStringへの拡張
Ext.jsでStringクラスに対して3つの静的方法を拡張しました.escape()、leftPad()、format()
二つの例示的な方法:togggg()、trim()
Stringクラスの拡張プログラムは比較的簡潔で、無駄話ではなく、Extのソースコメントと例を翻訳します.
/**
* @String
* JavaScript String
*/
Ext.applyIf(String, {
/**
* String ’ \
* @ {String} string
* @ {String}
* @
*/
escape : function(string) {
return string.replace(/('|\\)/g, "\\$1");
},
/**
* 。 ,
* 。 :
* <pre><code>
var s = String.leftPad('123', 5, '0');
// s now contains the string: '00123'
</code></pre>
* @ 1 {String} string
* @ 2 {Number} size
* @ 3 {String} char (optional) ( " " )
* @ {String}
* @
*/
leftPad : function (val, size, ch) {
var result = new String(val);
if(!ch) {
ch = " ";
}
while (result.length < size) {
result = ch + result;
}
return result.toString();
},
/* , 。* , {0}、{1}… 。
* :
* <pre><code>
var cls = 'my-class', text = 'Some text';
var s = String.format('<div class="{0}">{1}</div>', cls, text);
// s now contains the string: '<div class="my-class">Some text</div>'
</code></pre>
* @ 1 {String} string ,
* @ 2 {String} value1 {0}
* @ 3 {String} value2 {1} ,
* @ {String}
* @
*/
format : function(format){
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(/\{(\d+)\}/g, function(m, i){
return args[i];
});
}
});
/* , 。
* , , * 。 , 。
* , , 。
* <pre><code>
// alternate sort directions
sort = sort.toggle('ASC', 'DESC');
// instead of conditional logic:
sort = (sort == 'ASC' ? 'DESC' : 'ASC');
</code></pre>
* @ 1 {String} value
* @ 2 {String} other , 。
* @ {String}
*/
String.prototype.toggle = function(value, other){
return this == value ? other : value;
};
/**
* , 。 :
* <pre><code>
var s = ' foo bar ';
alert('-' + s + '-'); //alerts "- foo bar -"
alert('-' + s.trim() + '-'); //alerts "-foo bar-"
</code></pre>
* @ {String}
*/
String.prototype.trim = function(){
var re = /^\s+|\s+$/g;
return function(){ return this.replace(re, ""); };
}();
format()メソッドの動作メカニズム:
Stringの拡張コードは比較的にはっきりしていて、よく理解しています.中のこのformat()の方法はちょっと味がありますが、筆者は長い間そのメカニズムが分かりませんでした.