펭귄집

Javscript 프토로타입



자바스크립트의 모든객체는 자신의 부모역할을 하는 객체와 연결되어있다.
-> 객체지향의 상속개념과 같이 부모 객체의 프로퍼티를 마치 자신의 것처럼 쓸 수 있는 것 같은 특
징이 있다.

자바스크립트에서는 이러한 부모 객체를 프로토타입객체(짧게는 프로토타입)이라고 부른다.

ECMAScript 명세서에는자바스크립트의 모든객체는 자신의 프로토타입을 가리키는[[Protytpe]]라는 숨겨진 프로퍼티를 가진다고 설명하고 있다.

객체를 생성할 때 결정된 프로토타입 객체는 이의의 다른 객체로 변경한느 것도 가능하다

-> 즉, 객체를 동적으로 바꿀 수 있다는 것 
(Javascript에서는 이러한 특징을 활용해서 객체 상속 등의 기능을 구현한다.) 



<참고문헌 : 인사이드자바스크립트>


Javascript 배열의 요소  생성


객체가 동적으로 프로퍼티를 추가할 수 있듯이, 배열도 동적으로 배열 원소를 추가할 수 있다.

자바스크립트 배열의 경우는 값을 순차적으로 넣을 필요없이 아무 인덱스 위치에나 값을 동적으로 추가할 수 있다. 


//빈배열
//1번
var emptyArr = [];
console.log(emptyArr[0]);  //(출력값) undefined

//배열 요소 동적 생성
//2번
emptyArr[0] = 100;
emptyArr[3] = 'eight';
emptyArr[7] = true;
console.log(emptyArr);
     //(출력값) [100, undefined X2, "eight", undefined X3, true] 

console.log(emptyArr.length);  //(출력값) 8



2번
자바스크립트가 배열의 크기를 현재 배열의 인덱스 중 가장 큰 값을 기준으로 정하기 때문이다

자바스크립트의 모든 배열은 이러한 length 프로퍼티가 있다.




<참고문헌 : 인사이드자바스크립트>


배열 표준 메서드와 length 프로퍼티



자바스크립트는 배열에서 사용가능한 다양한 표준 메서드를 제공

이러한 배열 메서드는 length 프로퍼티를 기반으로 동작하고 있다.

Example) 
push()메서드는 인수로 넘어온 항목을 배열의 끝에 추가하는 자바스크립트 표준배열 메서드임
이 메서드는 배열의 현재 length값의 위치에 새로운 원소값을 추가함
배열의 length프로퍼티는 '현재 배열의 맨 마지막 원소의 인덱스 + 1'을 의미함

-> 결국 length프로퍼티가 가리키는 인덱스에 값을 저장하는 것== 배열의 끝에 값을 추가하는것 


//arr 배열 생성
var arr = ['zero','one','two'];

//push() 메서드 호출
arr.push('three');
console.log(arr);  //(출력값)  ['zero','one','two','three']

//length값 변경 후, push()메서드 호출
arr.length = 5;
arr.push('four');
console.log(arr);  //(출력값) ['zero','one','two','three',undefined,'four']



push()메서드로 arr[3]위치에 'three'문자열을 저장함으로써 배열의 끝에 원소를 추가함
arr.length프로퍼티값을 임의로 5로 바꿈
push()메서드는 현재 변경된 arr.length가 가리키는 배열의 5번째 인덱스, arr[5]에 'four'문자열을 추가

-> 배열의 length프로퍼티는 배열 매서드에 동작에 영향을 줄수 있을만큼 중요한프로퍼티





<참고문헌 : 인사이드자바스크립트>