jQuery에는 noop()이라는 함수가 있습니다. 말 그대로 no operation, 아무런 동작을 하지 않는 빈 함수인데요. 빈함수는 다음의 용도에서 유용하게 사용할 수 있습니다. 사용자가 레이어에 클릭/마우스오버/마우스아웃의 동작을 옵션으로 정의해서 넘겨주는 경우에 이를 실행한다는 코드를 작성한다고 가정해볼께요.
var options = {click: function() {alert("클릭입니다.");}}
var layer = new Layer(options);
var layer = new Layer(options);
그리고 Layer 내부에서는 click이 발생할 때 옵션 코드를 실행하게 됩니다.
Layer.prototype = {
onClick: function() {
if( this.options.click ) {
this.options.click();
}
}
...
}
onClick: function() {
if( this.options.click ) {
this.options.click();
}
}
...
}
이렇게 코드를 작성하게 되면 클릭/마우스오버/마우스아웃 모두 옵션값이 있는 지 여부를 체크하는 조건문이 들어가게 됩니다.
이런 경우에는 디폴트 옵션 값을 아무런 동작을 하지 않는 noop 함수로 정의해주고 jQuery.extend()를 사용하여 기본 옵션 값을 사용자 정의 값으로 덮어쓰게 되면 옵션값이 있는 지 여부를 체크하는 조건문을 모두 삭제할 수 있습니다.
var Layer = function(options) {
this.options = jQuery.extend(this.options, options);
}
Layer.prototype = {
options: {
onClick: jQuery.noop, ...
}
}
this.options = jQuery.extend(this.options, options);
}
Layer.prototype = {
options: {
onClick: jQuery.noop, ...
}
}
그리고, 빈함수를 사용하는 경우 모두 jQuery.noop을 사용하기 때문에 미약하지만 function() {}을 사용하는 비용도 줄이는 효과도 줍니다.











최근 덧글