개발 일지 (TIL)

TIL 2023-08-16

늘곰's 2023. 8. 16. 22:42

오늘 배운것 

  • 얕은복사 깊은복사 재귀적 함수 표현
  • THIS 에 대한 내용
  • THIS 로 생기는 문제의 해결법 (call , apply ,  bind)
  • 다른사람이 작성한 야구 게임의 리뷰

 

 

// apply 사용

var numbers = [10,20,3,16,45]
// var max = min =  numbers[0]; //10

// numbers.forEach(function(number){
//     현재 돌아가는 숫자가 max 보다 큰 경우
//     if (number > max) {
//         max = number;
//     }

//     if (number < min) {
//         min = number;
//     }
// });

// console.log(max , min)


// null 
// var max =Math.max.apply(this, numbers);
// var min =Math.min.apply(null, numbers);

// console.log(max , min)
// console.log(max , min)


//spread operator

var max = Math.max(... numbers);
var min = Math.min(... numbers);

console.log(max , min)

 

//call 사용

function Person(name, gender){
    this.name = name;
    this.gender = gender;
}

function Student(name, gender, school) {
    Person.call(this, name, gender);
    // this.name = name;
    // this.gender = gender;
    this.school = school;
}

function Employee(name, gender, company) {
    Person.call(this, name, gender);
    // this.name = name;
    // this.gender = gender;
    this.company = company;
}

var dk = new Student('길동','male','서울대')
var ks = new Employee('길순','female','삼성')

console.log(dk)
console.log(ks)
// THIS
// 1. 노드
// 2. 브라우저
// 전역환경에서this 는 노드에서는 글로벌 브라우저에서는 윈도우이다
// 함수는 독립적으로 존재하고 매서드는 객체가 필요하다 매서드 : 객체.매서드
 
var obj1 = {
    outer : function () {
        console.log("test1 =>", this);
        var innerFunc = function () {
            console.log("test2 =>",this); 
        };
        innerFunc();

        var obj2 ={
            innerMethod: innerFunc,
        };
        obj2.innerMethod();
    },
};

obj1.outer();

// console.log(this);
// 재귀적 표현법



var copyObjectDeep = function(target) {
    var result ={};
    if (typeof target === 'object' && target !== null){
        for (var prop in target){
            result[prop] = copyObjectDeep(target[prop]);
        }
        
    }else{
        result = target;
    }
    return result
}