목록전체 글 (39)
몽탁이의 개발일기
전역 객체란 말 그대로 전체 영역에서 접근할 수 있는 객체입니다. function func(){ alert('Hello'); } func(); window.func(); func()와 window.func()의 결과는 똑같이 Hello를 출력하게 됩니다. 즉 사용자가 만드는 모든 객체와 변수는 window라는 객체 안에 속성을 정의하는 것이라고 볼 수 있습니다. 좀더 쉽게 풀이하면 func라는 함수는 window라는 객체 안에 func라는 속성이 있고 값은 function func(){ alert('Hello'); } 가 들어있는것 입니다. 이런 점에 볼때 func는 window객체 안에 정의된 함수이기 때문에 메서드이기도 합니다. 호스트 환경에 따라 전역객체의 이름이 달라질 수 있으니 이점을 주의하셔야..
자바스크립트는 함수 기반 프로그래밍이기 때문에 객체지향적인 프로그래밍을 하는데 있어서 다른 언어와는 차이점이 많습니다. 자바스크립트에서 객체를 생성할때 var p0 = {} p0.name='egoing'; p0.introduce=function (){ return 'My name is '+ this.name; } var p1 = {} p1.name='leezche'; p1.introduce=function (){ return 'My name is '+ this.name; } 이와 같은 식으로 p라는 객체를 생성하고 그 후에 프로퍼티를 만드는 방법이 있고 var p0 = { name: 'egoing'; introduce: function (){ return 'My name is '+ this.name; }..
apply 메소드는 함수를 정의하게 되면 자동으로 만들어지는 내장 객체입니다. 이 메소드는 함수를 호출할 때 대신 사용하게 됩니다. o1 = {val1:1, val2:2, val3:3} o2 = {v1:10, v2:50, v3:100, v4:25} function sum(){ var _sum=0; for(name in this){ _sum += this[name]; } return _sum; } alert(sum.apply(o1)); // 출력값 6 alert(sum.apply(o2)); // 출력값 185 위 예제는 apply 메소드를 사용하여 sum을 호출합니다. 이때 넘기는 o1이라는 객체는 this를 가리키게 되고 o1에 대한 값들이 더해져 반환됩니다. 그 밑에 다시 o2의 객체를 인자로 넘기게 ..
자바스크립트에서 함수를 정의하면 자동으로 함수 내부에 arguments 객체가 생깁니다. arguments 객체는 함수안에 정의되어있기 때문에 메소드라고도 합니다. arguments 객체는 배열의 역할과 비슷하다고 하여 유사배열객체라고 합니다. 여기서 주의할 점은 유사 배열 객체는 말 그대로 유사 배열 객체이지 배열이 아니란 것을 알아야 됩니다. 배열이 아니기 때문에 배열 객체의 메소드를 사용할 수가 없습니다. 대신 유사배열객체는 apply 메소드를 사용하여 배열처럼 사용할 수 있습니다. function sum(){ var i, _sum=0; for(i=0; i
var arr = []; for(var i=0; i
클로저는 외부 함수 안에 있는 내부 함수가 외부 함수의 지역변수에 접근이 가능한 것이 클로저입니다. function outter(param){ var i=1; return function (){ alert(i); alert(param); } } var inner = outter(2); inner(); 결과) 경고창 1 출력 경고창 2 출력 클로저는 단순히 내부함수에서 외부 함수의 지역변수에 접근하는 것에 뿐만 아닙니다. 위에 예제를 보면 var inner 변수에 outter를 호출하여 함수를 리턴 후 값으로 저장하게 되는데 밑에서 inner를 호출하면 i와 param의 값을 따로 넣어주지 않아도 호출이 되는 것이 보입니다. 클로저는 외부함수를 호출하고 종료 후에도 호출한 시점의 지역변수를 잃지 않고 계속..
자바스크립트에서 함수는 객체입니다. 때문에 값으로 사용할 수 있습니다. function a(){} 와 var a=function(){} 는 같은 의미를 지니고 있습니다. 또한 함수는 값으로 사용될 수 있기 때문에 var a={ b:function(){ } } 위와 같이 객체안에 값으로 들어가는 것이 가능합니다. 여기서 a라는 객체안에 있는 b라는 속성(property)에는 값으로 함수가 들어가 있습니다. 이때 객체안에 있는 속성(property)의 값이 함수는 메소드라고 불리게 됩니다. 즉 메소드란 어딘가에 종속되어있는 함수라고 볼 수 있습니다. 함수가 값으로 쓰이는 경우를 더 살펴보겠습니다. 1. 인자로 사용되는 경우 function cal(func,num){ return func(num); } fun..
가리키는 변수를 어느 시점에서 결정하느냐에 따라 정적 유효범위인가 동적 유효범위인가를 나누게 됩니다. var i=5; function a(){ var i=10; b(); } function b(){ document.write(i); } a(); 위 예제를 보면 a함수를 호출하게되면 b함수가 호출하게 되어있습니다. 이때 b함수에서 가리키는 변수는 전역 번수인 var i =5; 를 가리키게 됩니다. 그 이유는 b()가 호출되는 시점에서 i값을 참조하는 것이 아니라 b()가 정의되는 시점에서 i가 참조해야 되는 값을 찾게 됩니다. 그렇기 때문에 전역 변수인 i를 가리키게 되는 것입니다. 그리고 이 것을 정적 유효범위라고 합니다.