1. primitive type이기 때문에 reference 가 바뀌는게 아님
2. x의 주소값이 들어가기 때문에, 변경됨
3. y = 2; // y는 더 이상 x의 주소를 가리키지 않고 2라는 값으로 채워집니다
4. outArray는 더 이상 myArray를 가리키지 않고, 연결고리가 끊어지는 것(레퍼런스가 끊어지는 것)
새로 assign을 하는 것 : 연결고리가 끊어지는 것
5. outArray[2] = 25 // ourArray[2]는 myArray[2]를 참조합니다
6. arr // 새로 배열을 만든거나 다름 없음 : var arr = myArray; 즉 레퍼런스를 카피한 것.
arr[2] =25; // arr[2]는 myArray[2]를 참조합니다.
7. var myArray = [2, 3, 4, 5];
function doStuff(arr) {
arr = [ ];// arr는 myArray를 가리키지 않고 새 배열 []을 참조합니다.
}
doStuff(myArray);
call by sharing이라고 하나, 좋은 용어인지는 모르겠음. copy by reference 선호함.
다들 많이 틀림. myArray를 덮어 씌우는게 아님. 끊는 거임.
8. var player = { score: 3 };
function doStuff(obj) { // var obj = player;
obj.score = 2; //obj.score는 palyer.score를 참조합니다/
obj = undefined; // obj는 더 이상 player를 참조하지 않고 undefined란 값으로 채워짐
}
doStuff(player);
9.
var player = { score: 3 };
function doStuff(obj) {
obj = {};
}
player = doStuff(player);
<- 왼쪽으로 향한 화살표가 리턴 표시. player가 undefined로 assign 된 것.
doStuff는 아무 것도 리턴하지 않음.
10.
var obj = {
inner: { x: 10 }
};
var example = obj.inner;
obj.inner = undefined;
// 중첩된 object 혹은 array는 한 메모리 영역을 차지하는 것이 아닌 각각의 공간을 차지합니다.
// obj의 공간과, { x: 10}의 공간은 다릅니다
// example은 {x:10}의 메모리 주소를 차지합니다. 이미 메모리 주소가 연결됐고, 끊어지는 건 아님.2. result는 value를 카피 했기 때문에 result는 변동이 없다(primitive type)
3.
4. func는 함수가 들어가고 g는 실행, h는 11이 들어감
obj.func는 12가 됐지만, obj.g는 그것과 관계가 없다!
5.
var x = 10;
function f () {
x = x + 1;
return x;
}
5.
f(); // 11
setTimeout(f, 1000); // 비동기 영역으로 넘어감, 보통 동기영역이 다 끝나면 실행되고 하나의 스코프가 끝나고 실행된다고 봄. 동기영역이 다 끝나고 콜백이 넘어옴.
f(); // 12
var result = x; // 12
6. setTimeout(12, 1000)이나 다를바가 없기 때문에 경우에 따라 에러
github에서 막아놓은 모양
8. 정의만 됐지 값이 할당된 적은 없기 때문에 에러.
// 타입 에러가 나옴package.json -> 디펜던시(dependencies, 종속된 패키지) 설정, 스크립트등을 기술해줌
npm -> node package manager
npm install -> 디펜던시를 까는 것(node_modules가 없는 이상 해줘야 함)
자바스크립트의 부모는 Object,
__proto__: assign이 안 되고, 크롬 전용 기능
Student.prototype = Object.create(Human.prototype);
Student.prototype.constructor = Student; //굳이 이렇게 추가로 설정해줘야 함.
Student.prototype.learn = function () {};
Human.call(this, name);
// Human.apply(this, arguments)
->Es6에서 해결
Subclassing 꼭 읽어야 함.
super는 부모의 this를 가리킴스펙spec 테스트에서 beforeEach 항목은 테스트를 실행하기 전에 꼭 한번 실행하라라는 뜻임.
beforeEach(function() {
grub = new Grub()
})클래스에선 리턴을 해주지 않아야 인스턴스를 받아올 수 있기 때문에 슈도클래시컬 한 방법에서는 리턴을 써주지 않음.
리턴 키워드를 컨스트럭터(클래스 만들어주는 생성자한테는 쓰지 않음.)
var bee = new Bee();
this == bee`