자바스크립트 문법 강의 들으면서 마지막에 나오는 문제풀이 부분을 기록해놓고자 적는다.
var user = {
name: "john",
age: 20,
}
var getAged = function (user, passedTime) {
// 여기에 작성
}
var agedUser = getAged(user, 6);
var agedUserMustBeDifferentFromUser = function (user1, user2) {
if (!user2) {
console.log("Failed! user2 doesn't exist!");
} else if (user1 !== user2) {
console.log("Passed! If you become older, you will be different from you in the past!")
} else {
console.log("Failed! User same with past one");
}
}
agedUserMustBeDifferentFromUser(user, agedUser);
var getAged = function (user, passedTime) {
var newUser = {};
for(var key in user) {
newUser[key] = user[key];
}
newUser.age += passedTime;
return newUser;
}
newUser
라는 새로운 변수를 만들어서 빈 객체로 만든다.
for...in
을 사용해서 user
안에 key가 계속 할당하게 한다.
user
의 key를 newUser
의 key에 새롭게 할당해라. === 복사되는것
그리고 for문을 빠져나가 age
를 passedTime
까지 늘린다.
var fullname = 'Ciryl Gane'
var fighter = {
fullname: 'John Jones',
opponent: {
fullname: 'Francis Ngannou',
getFullname: function () {
return this.fullname;
}
},
getName: function() {
return this.fullname;
},
getFirstName: () => {
return this.fullname.split(' ')[0];
},
getLastName: (function() {
return this.fullname.split(' ')[1];
})()
}
console.log('Not', fighter.opponent.getFullname(), 'VS', fighter.getName());
console.log('It is', fighter.getName(), 'VS', fighter.getFirstName(), fighter.getLastName);
Not Francis Ngannou VS John Jones
It is John Jones VS Ciryl Gane
1) Not
출력
2) fighter.opponent.getFullname()
을 가져오니까 opponent:
의 fullname
인 Franscis Ngannou
가 출력
3) VS
출력
4) fighter.getName()
이니까 두번째 function: getname
을 보면 return이 this.fullname
이다. this가 fighter이니까 fullname = John Jones
5) It is
출력
6) 4번과 같은 이유로 John Jones
출력
7) VS
출력
8) getFirstname
은 지금 화살표 함수
를 사용으로 var fullname = 'Ciryl Gane'
이 this가 된다. split[0]번째
만 가져오게 하였으므로 Ciryl만
출력
9) 호출부가 없기때문에 getLastname()이 아니라 그냥 getLastname이다. 함수를 잘 보면 스스로 선언
하고 호출
까지 해놨으므로 호출의 주체가 없으므로
전역변수로 로 8번과 같은 fullname이 this가 된다. split[1]
이므로 Gane
만 출력
this 부분이 확실히 어려웠는데, 보면서 다시 정리하고 갑니당~!