반응형
상위 개체의 메소드를 불러오는 방법
: 상위개체.prototype.method.call(this, arguments)
FlyingHorse.prototype.goSomewhere = function(destination, milesToDestination) {
if (milesToDestination < 10) {
return Horse.prototype.goSomewhere.call(this, destination);
} else {
return this.name + " is flying to " + destination + "!";
}
};
굳이 따로 지정해줄 필요는 없었다. 아래의 예제 처럼 (내가 쓴것^^!)
var FlyingHorse = function(name, color) {
Horse.call(this, name);
this.color = color;
this.oldGoSomewhere = Horse.prototype.goSomewhere.bind(this);
};
FlyingHorse.prototype = Object.create(Horse.prototype);
FlyingHorse.prototype.constructor = FlyingHorse;
FlyingHorse.prototype.goSomewhere = function(destination, milesToDestination) {
if (milesToDestination < 10) {
return this.oldGoSomewhere(destination);
}
if (milesToDestination >= 10) {
return this.name + " is flying to " + destination + "!";
}
.call(this, arg1, arg2, ...args) VS .apply(this, 단일배열)
arr.forEach(callback(currentvalue[, index[, array]])[, thisArg]);
precourse 때부터 forEach를 제대로 배운적이 없다는 것을 깨달았다. forEach를 쓸 줄을 몰라서 reduce 를 쓰거나 항상 for loop를 주로 사용했는데, 오늘 처럼 시간이 있을 때 봐야겠다는 생각이 들어서 봤다.
let arr = [1,2,3,4,5];
//for loop 사용
for(let i = 0; i < arr.length; i++) {
console.log(arr[i]);
};
//forEach 사용
arr.forEach(element => console.log(element));
.map() 의 활용
빈배열을 만들고 -> for loop를 이용해서 빈배열에 push 해주는 식으로 풀었는데, 그냥 map을 쓰면 될 일이었다.
var sport = {
name: "basketball",
players: [
{ name: "LeBron James", age: 31 },
{ name: "Kevin Durant", age: 28 }
],
playerNames: function() {
let arr = [];
let players = this.players;
for (let el of players) {
arr.push(`${el.name} plays basketball`);
}
return arr;
}
};
var sport = {
name: "basketball",
players: [
{ name: "LeBron James", age: 31 },
{ name: "Kevin Durant", age: 28 }
],
playerNames: function() {
return this.players.map(el =>`${el.name} plays basketball`);
}
};
sport.playerNames();
// [ 'LeBron James plays basketball', 'Kevin Durant plays basketball' ]
Tree.prototype.map()
: callback에 따라 새로운 Tree를 만들어주는 것.
새로운 트리를 만들어주고. 그 트리의 value에 callback한 값을 대입. 만약에 트리에 자식노드가 있다면, 각 자식 노드를 순회 + 재귀하면서 value 에 callback 한 값을 입력해준다.
Tree.prototype.map = function(callback) {
let tree = new Tree();
tree.value = callback(this.value);
if (this.children) {
for (let el of this.children) {
tree.children.push(el.map(callback));
}
}
return tree;
};
이렇게 풀 수도 있었다. callback 함수의 value를 가진 새로운 Tree로 시작해, 원래 tree의 자식들이 reduce 로 각각 순회+ callback 이 적용되며 처음 값으로 설정된 새로운 Tree의 자식들로 추가되는 것.
Tree.prototype.map = function(callback) {
return this.children.reduce(function(tree, child) {
return tree.addChild(child.map(callback));
}, new Tree(callback(this.value)));
};
반응형
'2. 우당탕탕 개발자 > 2-1. 공부기록' 카테고리의 다른 글
15Jan2010 TIL (0) | 2020.01.16 |
---|---|
14Jan2020 TIL (0) | 2020.01.14 |
11Jan2020 TIL (0) | 2020.01.12 |
10Jan2020 TIL (0) | 2020.01.11 |
09Jan2020 TIL (0) | 2020.01.10 |
댓글