목록Javascript 정리 (30)
몽탁이의 개발일기
표준 내장 객체는 프로그래머가 소프트웨어를 만드는데 편하게 만들어주는 미리 만들어진 객체입니다. 만약 프로그래머가 랜덤 한 수가 필요할 때 랜덤 한 수를 리턴하는 로직을 따로 만들지 않고 내장되어 있는 Math객체를 이용해 Math안에 메서드를 사용하여 랜덤 한 수를 구하는 것처럼 프로그래머를 편하게 만들어줍니다. var arr = new Array('seoul','new york','ladarkh','pusan','Tshkuba'); function getRandomValueFromArray(arr){ var index = Math.floor(arr.length * Math.random()); return arr [index]; } console.log(getRandomValueFromArray(arr..
자바스크립트에서 prototype은 아주 중요한 개념입니다. 자바스크립트의 객체지향을 지탱해주는 큰 역할을 해주기 때문입니다. 또 일반적인 객체지향 언어와 구분해주는 중요한 개념이기도 합니다. prototype은 모든 객체가 가지고 있는 속성입니다. 그리고 이 속성은 자신이 어떤 객체인지에 대한 객체가 들어 있습니다. function Ultra(){} Utra.prototype.ultraProp = true; function Super(){} Super.prototype = new Ultra(); function Sub(){} Sub.prototype = new Super(); var o = new Sub(); console.log(o.ultraProp); 위 예제는 해당 객체의 prototype 프로퍼..
자바스크립트에서의 상속은 prototype이라는 객체가 있기 때문에 가능합니다. 우선은 자바스크립트에서 상속을 어떻게 사용하는지에 대해서만 설명하고 다음에 prototype이라는 개념을 알아보겠습니다. 상속은 특정 객체의 기능들을 물려받아 사용하거나 기능을 더 추가하여 사용할 수 있게 하는 것입니다. 이런 특성은 재활용성을 높여주고 유지보수에 있어서 간편하게 해 줄 수 있습니다. function Person(name){ this.name = name; } Person.prototype.name = null; Person.prototype.introduce = function() { return 'My name is ' + this.name; } function Programmer(name) { this...
this는 객체를 지칭하는 키워드입니다. 객체를 지칭하는 시점이 상황에 따라 다르기 때문에 주의하여야 합니다. function func(){ if(window === this){ console.log('window === this'); } } func(); 위 예제의 함수를 호출하면 'window === this'가 출력이 됩니다. 그 이유는 앞에 전역객체의 내용처럼 모든 객체는 전역 객체의 속성으로 선언되기 때문입니다. var o ={ func: function(){ if(o === this){ console.log('o === this'); } } } o.func(); 이번에는 o라는 객체 안에 함수를 정의하여 해당 함수를 호출하게 되면 his는 o라는 객체를 가리키게 됩니다. 이렇듯 this는 호출..
전역 객체란 말 그대로 전체 영역에서 접근할 수 있는 객체입니다. 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