let user = { // 객체
name: "John", // 키: "name", 값: "John"
age: 30, // 키: "age", 값:30
}
// 프로퍼티 값 얻기
alert(user.name); // John
alert(user.age); // 30
let num = 100;
const user = {
name : 'john', // 프로퍼티 property
age : 30,
bark : function(bark) {
return `개가 ${bark} 짖는다.`
}
}
user.name = "david";
alert(user.bark("멍쓰"))
// {key:value}
let dic = {}; // 빈 객체
dic.boy = "소년";
dic.girl = "소녀";
dic.friend = "친구";
delete dic.girl;
// 객체 리터럴
let dic = {
boy : "소년",
girl : "소녀",
friend : "친구"
}
const는 주소값만 고정하는 것이지 내용까지 전부 고정시키는 것이 아니다.
let user = {
name : "John",
age : 30,
"likes birds" : true // 복수의 단어는 따옴표로 묶어야 합니다.
};
키에 어떤 문자열이 있던지 상관없이 동작한다.
자바스크립트는 likes birds를 읽으려면 user.
으로 대신 읽을 수 없다.
키가 유효한 식별자가 아닌 경우 점 표기법 대신 대괄호 표기법을 사용한다.
alert(user['likes birds'])
let key = "likes birds";
// user["likes birds"] = true; 와 같습니다.
user[key] = true;
let fruit = prompt("어떤 과일을 구매하시겠습니까?", "apple");
let bag = { [fruit]:5, // 변수 fruit에서 프로퍼티 이름을 동적으로 받아옵니다.
};
alert(bag.apple); // fruit에 "apple"이 할당되었다면 5가 출력됩니다.
[fruit]은 프로퍼티 이름을 변수 fruit에서 가져오겠다는 의미
사용자 프롬프트에 apple을 입력했다면 bag엔 {apple:5} 가 할당
function makeUser(name, age) {
return {
name: name,
age: age,
// 등등
}
}
프로퍼티들은 일므과 값이 변수의 이름과 동일.
프로퍼티 값 단축 구문을 사용하면 코드를 짧게 줄일 수 있다.
let user = {};
alert(user.noSuchProperty === undefined); // true는 '프로퍼티가 존재하지 않음'을 의미합니다.
"key" in object
let user = { name: "John", age: 30 };
alert("age" in user); // user.age가 존재하므로 true가 출력됩니다.
alert("blabla" in user); // user.blabla는 존재하지 않기 때문에 false가 출력됩니다.
let user = {
name : "john",
age : 30,
isadmin : true
}
for (let key in user) {
alert(key);
alert(user[key]);
}
let user = {
name: "John"
}
화살표 함수: 함수 표현식보다 단순하고 간결한 문법으로 함수를 제작
func는 화살표 우측의 표현식(expression)을 평가하고 평가 결과를 반환.
// 화살표 함수
// 1. function 키워드 제거
// 2. 함수의 이름을 변수로 사용
const plus = (a, b) => {
return a + b;
}
// 화살표 함수 간소화(구현이 한 줄이면서 바로 return 일 때)
// 바로 값을 리턴할 때 리턴을 생략하고 축약해서 작성 가능
const plus = (a, b) => a + b;
// 인수가 하나일 경우 괄호 생략 가능
const plus = num => num * 2;
// 인수가 한 개도 없을 경우
const plus4 = () => alert("더할 데이터가 없습니다.");
객체는 속성과 메소드로 구성
let user = {
name : "john",
age : 30,
say() {
alert(this.name) // this == user
}
};
user.say();
this : 자기 자신 객체(user)
let user = {
name : "john",
age : 30,
say() {
alert(user.name)
}
};
let admin = user; // 주소값을 복사
user = null;
admin.say();
user의 주소값을 admin에 복사하고 user를 null로 변경했을때 admin의 say()를 호출하면 user의 값을 불러오기 때문에 이 경우 this를 사용해야 한다.
주소값을 복사할때 객체의 내용까지는 복사가 되지 않기 때문이다.
let user = {name : "john"};
let admin = {name : "admin"};
function say() {
alert(this.name)
}
user.age = 25;
user.func = say; // 내가 추가한 key = func
admin.func = say;
user.func(); // this == user
admin.func(); // this == admin
user['func']();
admin['func']();
// 화살표 함수 안에서의 this
let user = {
name : "john",
say() {
let arrow = () => {
alert(this.name)
}
arrow()
}
}
user.say();
화살표 함수는 일반 함수와 다르게 고유한 this를 갖지 않고, 자기 상위의 this를 갖고온다 : 자신의 함수 상위의 this(객체)
화살표 함수와 일반 함수의 유일한 차이점!