Object.prototype.__proto__ 는 null이다.
const parent = { a: 1};
// const child = {}
const child = Object.create(parent);
console.log(child); // {}
console.log(child.a); // 1
정적메소드는 this를 쓰지 않는다.
function getMaxValueFromArray(array){
// return Math.max.apply(null, array); // null자리에는 this가 오려고 보니까, Math는 정적이기때문에 this를 쓰지 않는다.
return Math.max.apply(...array);
}
console.log(getMaxValueFromArray([3, 6, -2, -5, 7, 3])); // 7
function getMinValueFromArray(array) {
return Math.min.apply(null, array);
}
console.log(getMinValueFromArray([3, 6, -2, -5, 7, 3])); // -5
// apply는 두번쨰 인자가 배열 , 호출할 함수들에게 전달할 인수들의 리스트
// call함수는 두번째 부터 인수가 리스트를 ,로 구분
// apply와 call의 하는 일은 같다.
// 4. 문자열 내 p와 y의 개수
// numPY함수는 대문자와 소문자가 섞여있는 문자열 s를 인수로 전달받는다.
// s에 존재하는 'p'의 개수와 'y'의 갯수를 비교해 같으면 true, 다르면 false를 리턴하도록 함수를 완성하라.
// 대소문자를 구별하지 않으며 'p', 'y' 모두 하나도 없는 경우는 항상 true를 리턴한다.
// 예를 들어 s가 'pPoooyY'면 true를 리턴하고 'Pyy'라면 false를 리턴한다.
function numPY(s) {
const str = s ? s.toUpperCase() : '';
let pCount =0;
let yCount =0;
for(let i=0;i<str.length;i++){
if(str[i] === 'P') pCount++;
if(str[i] === 'Y') yCount++;
}
return pCount === yCount
}
console.log(numPY('pPoooyY')); // true
console.log(numPY('Pyy')); // false
console.log(numPY('ab')); // true
console.log(numPY('')); // true
console.log(numPY()); // true
// 5. 이상한 문자만들기
// toWeirdCase함수는 문자열을 인수로 전달받는다.문자열 s에 각 단어의 짝수번째 인덱스 문자는 대문자로,
// 홀수번째 인덱스 문자는 소문자로 바꾼 문자열을 리턴하도록 함수를 완성하라.
// 예를 들어 s가 'hello world'라면 첫번째 단어는 'HeLlO', 두번째 단어는 'WoRlD'로 바꿔 'HeLlO WoRlD'를 리턴한다.
// 주의) 문자열 전체의 짝 / 홀수 인덱스가 아니라 단어(공백을 기준)별로 짝 / 홀수 인덱스를 판단한다.
function toWeirdCase(s) {
let str = s.split(' ');
let result = '';
for(let i=0;i<str.length;i++){
for(let j=0;j<str[i].length;j++){
if(j%2===0) result += str[i][j].toUpperCase();
else result += str[i][j];
}
result += ' ';
}
return result;
}
console.log(toWeirdCase('hello world')); // 'HeLlO WoRlD'
console.log(toWeirdCase('my name is lee')); // 'My NaMe Is LeE'
// 핸드폰 요금 고지서에 표시할 전화번호는 개인정보 보호를 위해 맨 뒷자리 4자리를 제외한 나머지를 * 으로 바꿔야 한다.
// 전화번호를 나타내는 문자열 str을 입력받는 hideNumbers 함수를 완성하라
// 예를들어 s가 ‘01033334444’면 ******* 4444를 리턴하고, ‘027778888’인 경우는 ***** 8888을 리턴한다.
function hideNumbers(str) {
let result = '';
for (let i = 0; i < str.length - 4; i++) {
result += str[i].replace(str[i], '*');
}
for (let i = str.length - 4; i < str.length; i++) {
result += str[i];
}
return result;
}
console.log(hideNumbers('01033334444')); // *******4444
console.log(hideNumbers('027778888')); // *****8888
반응형
'패스트캠퍼스 > 수업내용정리' 카테고리의 다른 글
2019-05-20 배열고차함수 , 정규표현식, 화살표함수 (0) | 2019.05.20 |
---|---|
2019-05-17 수업 내용정리(배열) (0) | 2019.05.17 |
2019-05-13 프로토타입 (0) | 2019.05.13 |
2019-05-10 전역변수의 문제점/let,const와 블록레벨 스코프/프로퍼티의정의/생성자 함수에 의한 객체 생성 (0) | 2019.05.10 |
2019-05-08 10. 원시값과 객체의 비교, 함수, 스코프 (0) | 2019.05.08 |