JavaScript/3주차
14. 3주차 끝 숙제
tnals634
2023. 5. 25. 09:35
나이든 유저
아래 코드에서 getAged 부분을 작성하면된다.
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 person = {};
for (var num in user){
person[num] = user[num];
}
person.age += passedTime;
return person;
}
다행히 잘 작동했습니다.
어제 자기전에 하려고했는데 도저히 생각이 나지 않아 잠을 청하고 오늘 아침에 정리한 것을 찾아보며 작성했습니다.
어떤 매치가 성사될까?
- 출력 결과를 제출, 그리고 그 이유를 최대한 상세히 설명
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);
우선 첫번째 console.log가 실행할때 fingter.opponent.getFullname()은 fighter 안에 fullname을 지나 opponent에 들어가 그안에 있는 getFullname에서 this가 가리키는 바로 위 fullname인 francis ngannou을 가져온다.
그리고 fighter.getName()은 마찬가지로 fighter로 들어가 opponent을 건너 뛰고 getName을 가져오는데 여기서 가리키는 this는 opponent위에 있는 fullname인 john jones를 가리키고 있기 때문에 그 값을 가져온다.
두번째 console.log가 실행할때 fingter.getName()은 fingter에 들어가 getName으로 this가 가리키는 fullName인 John jones를 가져오고,
fighter.getFirstName()은 fighter에 들어가 getFirstName에 들어가면 이건 화살표함수이기때문에 안에있는 this는 바인딩이 되지 않아 밖에있는 fullname의 'ciry1 gane'중 index가 0번째인 ciry1을 가져오고,
figther.getLasName은 함수이기때문에 this가 지역객체가 아닌 전역객체를 가리키기 때문에 전역객체인 fullname의 'ciry1 gane'이름 중 index가 1번째인 gane을 가져오게 된다.