Javascript 개체
Javascript의 개체는 단순히 key/value의 쌍을 가지는 컬렉션이다.
MS계열에서의 문자열키가 있는 사전으로 생각할수도 있다.
"."(dot)연산자나 일반적으로 사전을 처리할때 사용되는 "[]"연산자를 사용하여
개체속성을 설정하거나 얻을수 있다.
다음 <코드1> 과 <코드2>, <코드3>는 정확히 같은 작업을 수행한다.
<코드1>
var userObject = new Object();
userObject.lastLoginTime = new Date();
alert(userObject.lastLoginTime);
<코드2>
var userObject = {}; // equivalent to new Object()
userObject[“lastLoginTime”] = new Date();
alert(userObject['lastLoginTime']);
<코드3>
var userObject = { 'lastLoginTime': new Date() };
alert(userObject.lastLoginTime);
* 참고
var userObject; // var 문에서 변수를 초기화 하지 않으면 undefined 값을 자동 수행
- undefined를 숫자식에 사용할때 결과는 NaN(Not a Number)으로 변환, 문자식에서는 "undefined", boolean식은 false 로 변환.
Javascript 함수
Javascript에서는 함수와 개체간의 차이가 모호하다. 다음 <코드4>, <코드5>, <코드6>을 보면
함수는 함수 호출작업을 지원하는 개체라고 볼수 있다.
<코드4>
function func(x) {
alert(x);
}
func('blah');
<코드5>
var func = function(x) {
alert(x);
};
func('blah2');
<코드6>
var func = new Function(“x”, “alert(x);”);
func('blah3');
* 참고
형변환 우선순위 : 문자 > 숫자 > 부울
Javascrpit 클래스
Javascrpit에서는 클래스가 없다. 비슷한 효과를 낼수는 있지만 클래스는 아니다. <코드7>
<코드7>
function DogConstructor(name) {
this.name = name;
this.respondTo = function(name) {
if(this.name == name) {
alert('Woof');
}
};
}
var spot = new DogConstructor('Spot');
spot.respondTo('Rover');
spot.respondTo('Spot'); // alert "Woof"
* 참고
조건부 블럭내에 변수 선언시 var를 사용하지 않은 경우 전역변수로 사용되어짐.
조건부 블랙내에 변수 선언시 블럭 시작 시점에서 모든 변수 선언을 처리
Javascript 프로토타입
prototype 속성을 사용하여 속성 및 메서드를 개체에 추가할 수 있으면, 이미 만들어진 이후에도 추가 가능
<코드8>
var testVehicle = new Vehicle(2, false);
Vehicle.prototype.color = "red";
var testColor = testVehicle.color; // testColor = "red"
기존 객체를 사용하여 다른 객체로 파생할때 사용
<코드9>
var Bicycle = Object.create(Object.getPrototypeOf(Vehicle), {
"pedals" :{value: true}
});
<코드9>에서 Bicycle의 프로토타입은 Vehicle.prototype 이다.
* 참고
JavaScript에는 object, function, string, number, boolean 및 undefined 형식만 존재
- 'typeof'예약어로 확인 가능. ex) typeof(a) or typeof b
원문 : http://msdn.microsoft.com/ko-kr/magazine/cc163419.aspx
|