ホームページ  >  記事  >  ウェブフロントエンド  >  シャープなjs関数集_javascriptスキル

シャープなjs関数集_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 18:51:31891ブラウズ

次に、いくつかの理想的な js プロトタイプ関数を共有します。編集と修正のほとんどは Yue Ying のブログからのものです
週に 5 時間以上 JS コーディングに費やす場合は、Yue Ying の本「The Return of the King」もお勧めします。
1. 関数グルー: 多くの学生は jq を使用することに慣れていますが、これらのプロトタイプ関数は少し不経済に思えます。

コードをコピー コードは次のとおりです。

Function.prototype.$concat = function( ){
var funcs = [this].concat(Array.apply([], argument));
return function(){
var ret = []
for(var i = 0; i < funcs.length; i ){
var func = funcs[i] : new Function(funcs[i]); this, 引数 ));
return ret;
}
//var concat = (function a(a){
//alert("a:") a);
//}).$concat(function b(b){
//alert("b:" b);
//concat(1) );


2. 関数の言語化は、ほとんどの人が抱いているプロセス指向のプログラミングの考え方とは大きく異なります。関数コーディングによって一部のコードがエレガント (そしておそらく奇妙) になる可能性があることを除けば、特に「必要」というわけではありません。



コードをコピー
コードは次のとおりです。Function.prototype.$curry=function( ){ with({that:this})
return function()
{
var args = Array.prototype.slice.call(arguments);
if(args.length< that.length )
{
return function(){
var _args = args.concat(Array.prototype.slice.call(arguments));
return that.$curry().apply (this, _args);
}
}
else return that.apply(this,args)
}
}
//varcurry=(function f(a, b,c ){
// アラート([a,b,c])
// }).$curry()
//カレー(1)(2)(3);
//curry(1,2)(3);


3.この言葉は私が作ったものですが、コメント内の呼び出しを見ればわかります。この関数はもともと with と Closure の等価性を証明することを目的としていましたが、非常に貴重なパターンを提供します。



コードをコピー
コードは次のとおりです。Function.prototype.$bind=function( object){ var callback = function () {
return argument[0];
}
with(object){
return eval('callback(' this.toString() ' )') ;
}
}
//var obj = {a:1,b:2};
//var binding=(function (){
// a= 10;
// b=11;
//bind(); 🎜>
4. 文字列の形式。多くの JS コード作成者が C# で string.Format メソッドを使用したいと考えているのではないかと思います (Java と同様)。実際、それはまったく面倒ではありません。




コードをコピー

コードは次のとおりです。
String.prototype.$format=function( ){ var ret; for(var i=1;ivar exp = new RegExp('\{' (i-1) '\}', 'gm' ); ret = (ret||this).replace(exp,arguments[i-1]); return
}
//alert( "{0 },{1},{4}".$format(0,1,2));


このような優れた関数については、機会があれば引き続き紹介していきます。未来。いくつかの関数に名前を付けて、それらを p.js と呼びましょう。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。