if(temp.length > 0){
temp = temp.split("-").join("'");
if(isNaN(temp)){
alert('전화번호는 숫자와 -만 가능합니다.');
document.form1.column4.focus();
    return;
}
}

if(temp.length > 0){
temp = temp.split(" ").join("");
if (temp.search(/(\S+)@(\S+)\.(\S+)/) == -1 ) 
{
alert('올바른 이메일 형식이 아닙니다.');
document.form1.column6.focus();
    return;    
}
}

apply 와 call 은 함수 실행시 함수 컨텍스트를 전달된 인자로 변경 시킬 수 있게 해준다.

함수 컨텍스트란 함수가 실행 될때 this 인자로 참조 하는 객체를 의미 한다.

단지 차이점은 call은 파라미터를 직접 넘기게 되고 apply이는 파라미터를 배열 형태로 넘길수 있다.

참고

IE 계열에서 전달되는 인자 값이 undefined 이면 에러가 난다.

fFunc.call(thisObject, a, b, c, d, ...);
fFunc.apply(thisObject, aArgs);

[출처] apply 와 call 에 대해서 알아 보자 (Web Programmer 2.0) |작성자 치토스

사용

<html>
<head>
<script>
  var o1 = {handle :'o1'};
  var o2 = {handle :'o2'};
  var o3 = {handle :'o3'};
  window.handle = 'window';
 
  function whoAmI(){
    return this.handle;
  }
  o1.identifyMe = whoAmI;

  alert(whoAmI());
  alert(o1.identifyMe());
  alert(whoAmI.call(o2));
  alert(whoAmI.apply(o3));

</script>
</head>
<body>
</body>
</html>

결과
window
o1
o2
o3

형태로 나온다. call과 apply 파라미터 인자 (객체)에 특정함수로 실행하는 것이다. 함수.call(객체)임 셈이다. 



$.fn.disable = function(){
return this.each(function(){
       if(typeof this.disabled != 'undefined') this.disabled = true;
});
}

$.fn.extend({
      disable : function(){
return this.each(function(){
       if(typeof this.disabled != 'undefined') this.disabled = true;
}); 
      }
});

확장메서드의 중요한 규칙은 만약 함수에 특정한 값을 반환할 의도가 없다면 반환값으로 항상 확장 집합을 돌려줘야 한다. 그래야만 새로운 커맨드도 jQuery 커맨드 체인에서 사용할 수 있다. 

<html>
<head>
<script type="text/javascript" src="jquery-1.2.6.js"></script>
<script type="text/javascript">
  // Your code goes here

  (function($){ //html시작시 실행되지 않고 선언해 놓은 것
$.say = function(what) {alert('I say ' + what);};

$.toFixedWidth = function(value, length, fill){
var result = value.toString();
if(!fill) fill = 0;
var padding = length - result.length;
if(padding < 0){
alert(-padding);
result = result.substr(-padding);
}else{
for( var n = 0; n < padding; n++)
result = fill + result;
}
return result; 
};
  }) (jQuery);


  jQuery(function($) { //html시작시 실행
$('#aaa').bind('click',function(){
$.say('hello');
});

alert($.toFixedWidth(3000, 3, 0));
  });
</script>
<style type="text/css">
    div.aaa { font-weight: bold; }
 </style>
</head>
<body>
<div id='aaa'>jquery</div>
</body>
</html>

 셀렉터  설명
 *  모든 엘리먼트와 일치
 E  태그명이 E인 모든 엘리먼트와 일치
 E F  E의 자손이면서 태그명이 F인 모든 엘리먼트와 일치
 E>F  E의 바로 아래 자식이면서 태그명이 F인 모든 엘리먼트와 일치
 E+F  E의 형제 엘리먼트로 바로 다음에 나오는 엘리먼트 F와 일치
 E~F  E의 형제 엘리먼트로 다음에 나오는 모든 엘리먼트 F와 일치
 E:ha(F)  태그명이 F인 자손을 하나 이상 가지는 태그명이 E인 모든 엘리먼트 일치
 E.C  클래스명 C를 가지는 모든 엘리먼트 E와 일치 E의 생략은 *.C와 동일함
 E#I  아이디가 I인 엘리먼트 E와 일치. E의 생략은 *#I와 동일함.
 E[A]  어트리부트 A를 가지는 모든 엘리먼트 E와 일치
 E[A=V]  값이 V인 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치
 E[A^=V]  값이 V로 시작하는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치
 E[A$=V]  값이 V로 끝나는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치
 E[A*=V]  값이 V를 포함하는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치


<script language="javascript">
 function reSizeFrame(obj){
  var innerBody = obj.document.body;
  var innerHeight = innerBody.scrollHeight + innerBody.clientHeight;
  obj.style.height = innerHeight;
 }
</script>
</HEAD>

<BODY>
<iframe name='iframe0' src='http://www.naver.com' width="100%" frameborder="0" scrolling="no" vspace="0" onLoad="reSizeFrame(this);">
</iframe>

onLoad가 있었구나 파이어폭스 같은 경우 contentWindow를 얻어와야 한다는데 swing인가? rootPane이 생각남


내부 함수(함수 안의 함수)가 내부 함수를 둘러싼 외부 함수의 변수나 매개변수를 이용했는데

이 외부 함수가 종료되어도 내부 함수에서 사용한 변수 값은 내부 함수 내에서 계속 유지되는

기능을 클로저라고 부른다.

<div id="main">hello</div>
<script>
 var obj = document.getElementById("main");

 obj.style.border = "1px solid red";

 setTimeout(function(){
  obj.style.display = 'none';
 }, 1000);

 function delayedAlert(msg, time){
  setTimeout(function(){
   alert(msg);
   },time);
 }

delayedAlert("Welcome", 2000); 
</script>


프로자바스크립트 책에서 나온 내용인데 setTimeout을 setTimeout  1초후 안보이게 하는데 obj를 쓸수 있다는 이야기?..  두번째도 2초후 alert 메세지 인데 msg를 쓸수 있다는 것??? 원래 되는거 아닌가?  궁금하다.

커링은 좀 신선했다.

<script> 
function addGenerator(num){
  return function(toAdd){
   return num + toAdd
  };
 }
 var addFive = addGenerator(5);

 alert(addFive(4) == 9);
</script>


함수를 만드는 건데 위에 함수를 선언하고 addFive를 5를 더하는 함수를 만드는 함수로 만든 것이다. 그래서 addFive(4)를 하면 9가 된다. 궁금한 것은 toAdd가 뭘까? 하는 건이다. 그냥 저렿게 선언해도 되는 것인지..
쩝 아 모르겠다 쌍~ alert(toAdd); 찍어보니 4가 나왔다 함수로 들어올 함수 변수 정도?  어렵지만 함수를 만들때
좋을 것 같다.

http://jibbering.com/faq/faq_notes/closures.htm 클로저에 대한 자세한 내용참조 (영어 울렁증이..)

+ Recent posts