[TIL #5] 20240423

차슈·2024년 4월 23일
1

TIL

목록 보기
5/70
post-thumbnail

자바스크립트 문법 강의 들으면서 마지막에 나오는 문제풀이 부분을 기록해놓고자 적는다.

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 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문을 빠져나가 agepassedTime까지 늘린다.


매치 성사

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:fullnameFranscis 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만 출력

1개의 댓글

comment-user-thumbnail
2024년 4월 23일

this 부분이 확실히 어려웠는데, 보면서 다시 정리하고 갑니당~!

답글 달기