1
2
3
4
5
6
7
8
let people1 = {
  age: 10
};
let people2 = people1;
 
people1.age = 20;
 
console.log(person2); // 20
cs

object 객체는 참조형식이라 객체 안의 속성을 바꾼다면 참조한 객체또한 바뀐다

1
2
3
4
5
6
7
const person = {
  name: () => {
    console.log(this.name);
    console.log(arguments);
  }
};
 
cs

Arrow 함수에는 this와 arguments가 없다

 

Closure = 지속적으로 그 변화를 추적하게 된다.

 

 

'자바스크립트' 카테고리의 다른 글

underdash 구현 어려웠던 두가지  (0) 2020.07.15
for ( let ... in ~)  (0) 2020.07.09
createElement에 대하여  (0) 2020.06.22
1
2
3
4
5
6
7
8
_.extend = function (obj) {
    for (let i = 0; i < arguments.length; i++) {
      for (let value in arguments[i]) {
        obj[value] = arguments[i][value];
      }
    }
    return obj;
  };
cs

arguments 가 여러가지 있을 수 있기 때문에 하나하나 다 집어넣기 위해서 for함수

arguments 값을 obj 값에다가 집어넣기 위해 = obj가 있을 때는 !== undefined를 이용(_.defaults) 

 

1
2
3
4
5
6
7
8
9
10
11
_.memoize = function (func) {
    let memo = {};
    return function () {
      if(memo[JSON.stringify(arguments)] === undefined){
        memo[JSON.stringify(arguments)] = func.apply(this, arguments);
        return memo[JSON.stringify(arguments)];
      } else {
        return memo[JSON.stringify(arguments)];
      }
    }
  };
cs

구현하는데 엄청 고민하고 찾아서 나온 결과... JSON.stringify를 이용할 줄 전혀 상상치 못해서...

 

'자바스크립트' 카테고리의 다른 글

자바스크립트 기억해야하는것  (0) 2020.07.26
for ( let ... in ~)  (0) 2020.07.09
createElement에 대하여  (0) 2020.06.22
1
2
3
4
5
6
7
8
9
10
let a = {
  a : 1,
  b : 2,
  c : 3
};
 
for (let value in a){
  console.log(value);
  console.log(a[value]);
}  // "a" 1 "b" 2 "c" 3
cs

value는 property를 뜻한다.

for ~ in ...은 property가 있는 객체를 반복시키기 위한 것이다.

 

(자꾸 헷갈려서...)

'자바스크립트' 카테고리의 다른 글

자바스크립트 기억해야하는것  (0) 2020.07.26
underdash 구현 어려웠던 두가지  (0) 2020.07.15
createElement에 대하여  (0) 2020.06.22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
let a = document.createElement("li");
 
for (let i = 0; i < 5; i++) {
  a.textContent = i;
  document.body.appendChild(a);
} // 4
 
for (let i = 0; i < 5; i++) {
  let b = document.createElement("li");
  b.textContent = i;
  document.body.appendChild(b);
} // 0 1 2 3 4
 
cs

 

처음에는 첫번째로 만들어 놓고 두번째처럼 출력이 안되서 왜 안되는 걸까 싶었다.

정말 너무 간단한 이야기였지만 나한테는 너무 당황스러웠고 왜 안되는 건가 싶어서 여기저기 찾아봤지만...

너무 간단한 문제였다.

 

단지 하나를 선언했는가 여러개를 선언했는가의 문제였다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
let a = document.createElement("li");
a.textContent = 0;
document.body.appendChild(a);
a.textContent = 1;
document.body.appendChild(a);
a.textContent = 2;
document.body.appendChild(a);
a.textContent = 3;
document.body.appendChild(a);
a.textContent = 4;
document.body.appendChild(a);
 
let b = document.createElement("li");
b.textContent = 0;
document.body.appendChild(b);
let b = document.createElement("li");
b.textContent = 1;
document.body.appendChild(b);
let b = document.createElement("li");
b.textContent = 2;
document.body.appendChild(b);
let b = document.createElement("li");
b.textContent = 3;
document.body.appendChild(b);
let b = document.createElement("li");
b.textContent = 4;
document.body.appendChild(b);
 
cs

늘여서 쓰면 이렇게 된다.

createElement 즉 li를 하나만 선언을 해놨기 때문에 하나만 나왔던 것이다.

'자바스크립트' 카테고리의 다른 글

자바스크립트 기억해야하는것  (0) 2020.07.26
underdash 구현 어려웠던 두가지  (0) 2020.07.15
for ( let ... in ~)  (0) 2020.07.09

+ Recent posts