오늘 배운것
- 얕은복사 깊은복사 재귀적 함수 표현
- 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
}