>  기사  >  웹 프론트엔드  >  날카로운 js 함수 모음_javascript 기술

날카로운 js 함수 모음_javascript 기술

WBOY
WBOY원래의
2016-05-16 18:51:31887검색

그런 다음 이상적인 js 프로토타입 기능을 공유하세요. 대부분의 편집 및 수정 내용은 Yue Ying 블로그
에서 가져왔습니다. Yue Ying의 책 "The Return of the King"도 추천합니다. JS 코딩에 일주일에 5시간 이상 투자했다면 여전히 읽어 볼 가치가 있습니다.
1. 많은 학생들이 jq를 사용하는 데 익숙합니다. 때때로 그들은 c#의 이벤트 = 대리자(delegate)와 비슷한 용도로 jq를 사용합니다.

코드 복사 코드는 다음과 같습니다.

Function.prototype.$concat = function( ){
var funcs = [this].concat(Array.apply([], 인수));
return function(){
var ret = []
for(var i = 0; i < funcs.length; i ){
var func = funcs[i] 인스턴스of 함수 ? funcs[i] : new Function(funcs[i]); this, 인수 ));
}
return ret;
}
}
//var concat = (function a(a){
// Alert("a:" a);
//}).$concat(function b(b){
// Alert("b:" b);
//}); );


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)
}
}
//var curry=(function f(a, b,c ){
// Alert([a,b,c]);
// }).$curry()
//curry(1)(2)(3);
//curry(1,2)(3);


3. 이 단어는 제가 만든 것인데, 댓글의 호출을 보면 알 수 있습니다. 이 함수는 원래 with와 closure의 동등성을 증명하기 위한 것이지만 매우 귀중한 패턴을 제공합니다.


Function.prototype.$bind=function( object){
var callback = function () {
return 인수[0]
}
with(object){
return eval('callback(' this.toString() ' )') ;
}
}
//var obj = {a:1,b:2};//varbind=(function (){
// a= 10;
// b=11;
//}).$bind(obj)
//bind()
//alert(obj.a); 🎜>
4. 문자열.형식. 많은 js 코더가 C#(java와 유사)에 string.Format 메서드를 갖고 싶어하는 것이 두렵습니다. 실제로는 전혀 번거롭지 않습니다.



코드 복사
코드는 다음과 같습니다.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으로 문의하세요.