javascript에서 블럭단위 변수를 생성할 때 사용하는 키워드는 const와 let이 있다.
const는 변수를 생성하면 변수값을 변경할 수 없고 let은 변수값을 변경할 수 있다는 차이점이 있다.
그러나 객체의 경우 객체의 속성을 변경했을 때 객체의 주소값이 변경되지 않으므로 const로 선언이 가능하다.
예를 들어 car.name이 k5일 때 car.name = "k7";으로 변경을 시도하더라도 에러가 발생하지 않는다.
객체를 선언하는 방법
const laptop = {
name: "samsung",
speaker: "samsung speaker"
}
다음과 같이 {} 안에 속성명: 속성값 형식으로 선언할 수 있다.
객체를 미리 생성하고 속성을 지정하는 방법
const laptop = {}; // new Object();
car.name = "sumsung";
car.powerOn = function(){
console.log("전원을 켭니다.");
}
다음과 같이 객체를 미리 생성하고 .으로 객체에 접근하여 속성을 지정하거나 함수를 만들 수 있다.
function으로 생성자를 만들어 선언하는 방법
function Laptop(name,speaker){
this.name = name;
this.speaker = speaker;
}
const myLaptop = new Laptop("mac","samsung");
function으로 생성자를 정의한다면 다음과 같이 new키워드로 객체를 생성할 수 있다.
function으로 생성자를 정의할 때 속성을 정의하고 싶으면 다음과 같이 속성명 앞에 this키워드를 반드시 붙여줘야 한다.
클래스를 생성하여 생성자를 만들어 객체를 생성하는 방법
class Laptop{
constructor(name, speaker){
this.name = name;
this.speaker = speaker;
}
powerOn(){
console.log("전원을 켭니다.");
}
}
const myLaptop = new Laptop("mac","sony");
myLaptop.powerOn();
다음과 같이 JAVA처럼 클래스를 정의하고 생성자를 만들어서 new키워드를 사용해 객체를 생성할 수 있다.
그러나 JAVA와 달리 생성자 오버로딩이 불가능하다.
객체 내에서 메소드를 정의하는 방법
일반적으로 메소드를 정의할 때
var fun1 = function(){}
또는
function fun1(){}
과 같이 선언할 수 있다.
객체 안에서 메소드를 선언하는 방법은
fun1 : function(){
실행문;
}
처럼 다른 메소드 선언 방식과 다르게 선언한다.
또는
fun1(){
실행문;
}
과 같이 일반적인 메소드 선언방식으로 선언할 수 있다.
const laptop = {
name: "samsung",
speaker: "samsung speaker"
setSpeaker: function(speaker){
this.speaker = speaker;
}
powerOn(){
console.log("전원을 켭니다.");
}
}
클라이언트에서 객체를 서버로 전달할 때는 객체를 JSON 문자열로 바꿔서 전달해야 한다.
그럴때 JSON.stringify 메소드를 사용한다.
//객체 -> JSON 문자열
let strJson = JSON.stringify(car);
console.log(strJson);
서버에서 전달받은 JSON 문자열을 다시 객체로 사용하기 위해서는 JSON.parse 메소드를 사용한다.
let car2 = JSON.parse(strJson);
댓글