prototype.js invoke 사용시 user-defined 함수 호출방법

실력 형편없어 4시간정도 삽질을 했다.
[code js]
function addSharp(s){
      return '#'+s;
}

var color = ['00FF00','FFFFAA','AADDEE'];
var rs = color.invoke('addSharp').join(',');
[/code]

동작하지 않을것이다. 기본적으로 prototype api에도 substring이나 toUpperString 같은 함수만 예제로 나와있다. 직접 정의해서 해보면 급하게 실망하고 구글링하다 여기 들어오셨을 분들이 많을것같다.(-.-ㅋ 별문제없이 해결하시는 고수분도 있으시겠지만....)
[code js]
Object.extend(String.prototype, {
      addSharp : function(el){
            return '#'+this;
      }
} );
[/code]
addSharp함수를 위와 같이 정의 해주면 된다. (보시는분중에 인자로 받은 el은 어떻게 되느냐? 하시는 분이 있을텐데, 아무값도 넘어오지 않는다. 저기도 삽질 포인트이다. prototype.js를 열어봤으나 아직하수라 정확히 이해 못했으므로 패스)

위 구문은 아래와 같이 해도 잘 동작한다. ( 혹자는 위 구문이 더 객체지향적이라한다. 하지만 아래구문도 직관적이라 별 차이 없는것 같다.)

[code js]
String.prototype.addSharp = function(e){
      return '#'+this.;
}
[/code]
 

댓글

이 블로그의 인기 게시물

C#에서 포인터 사용

WPF RichTextBox 와 Document의 바인딩

WPF 이미지위에 라인 그리기(WPF DrawLine on exist Image)