프로토타입: __proto__

 

e.g.) bmw, benz, audi 객체에서 중복되는 프로퍼티를 어떻게 처리할까?

  →  car라는 상위 객체를 하나 만들어서 중복되는 프로퍼티를 넣음

  →  그리고나서 car bmw, benz, audi의 프로토타입으로

  →  다시 말하면, bmw, benz, audicar를 상속받음

 

  콘솔창에 bmw를 입력해보면 다음과 같은 결과를 확인할 수 있음

  bmw.color 입력하면 먼저 bmw 객체 내부에서 color 프로퍼티를 찾고

  발견하면 그 즉시 탐색을 멈추지만, 찾지 못하면 프로토타입에서 확인함

  그래서 bmw.wheels를 입력했을 때에 bmw 객체 내부에서 wheels 프로퍼티를 찾지 못하여

  __proto__에 있는 wheels 프로퍼티 값을 찾게 됨

 

 

Prototype Chain

e.g.) 상속은 계속 이어질 수 있다.

 

 

for(p in x5) {
	console.log(p);
} // color, name, navigation, wheels, drive 출력

Object.keys(x5); // [“color”, “name”] 출력
Object.values(x5); // [“white”, “x5”] 출력

  →  key, value와 관련된 객체 내장 메소드는 상속된 프로퍼티에 대한 값은 출력하지 않음

 

 

e.g.)  hasOwnProperty를 사용하여 상속된 프로퍼티와 구분하여 출력하기

for(p in x5) {
	if(x5.hasOwnProperty(p)) {
		console.log(‘o’, p);
	} else {
		console.log(‘x’, p);
	}
}


//→	o color
//	o name
//	x navigation
//	x wheels
//	x drive 출력

             

e.g.) 생성자 함수를 이용한 상속       

 

 

 

인스턴스(instance): 생성자 함수가 만들어낸 새로운 객체

 

instanceof: 이 연산자를 사용하면 객체가 해당 생성자로부터 생성된 것인지에 대해 true, false를 반환하여 알려줌

z4 instanceof Bmw // true 출력

  →  z4Bmw의 인스턴스이기 때문

 

constructor: 해당 인스턴스의 생성자, 인스턴스 객체에 존재하는 프로퍼티

z4.constructor === Bmw; // true 출력

  →  z4의 생성자는 Bmw이기 때문

 

e.g.) 프로토타입을 묶어서 작성

z4.constructor === Bmw; // false 출력

 

e.g.) constructor 직접 명시

z4.constructor === Bmw; // true 출력

 

 

 

 

 

↓ [코딩앙마] 자바스크립트 중급 강좌 링크

https://www.youtube.com/watch?v=ddJcDZHBRm0 

 

 

 

1. .Net SDK 설치 및 환경변수 설정

 

↓ 다음 링크로 이동해서 .Net SDK 혹은 .Net Core SDK를 설치한다. 

https://dotnet.microsoft.com/download

 

Download .NET (Linux, macOS, and Windows)

Free downloads for building and running .NET apps on Linux, macOS, and Windows. Runtimes, SDKs, and developer packs for .NET Framework, .NET Core, and ASP.NET.

dotnet.microsoft.com

 

1) 설치가 완료되면 <윈도우 키 + R>를 누르고  sysdm.cpl을 입력한다.  

 

2) <시스템 속성> 창이 뜨면 고급→환경변수를 클릭한다. 

 

3) <환경변수> 창에서 시스템 변수에 있는 Path에 방금 설치한 dotnet 경로를 추가한다. 

 

 

2. C# 확장 기능 설치

 

 

Visual Studio Code에서 Extensions에 들어가서 C# 검색 후 위 이미지에 보이는 확장 기능을 설치한다. 

 

 

3. C# 프로젝트 활성화

 

1) Visual Studio Code에서 상단에 Terminal→New Terminal을 누르거나 Ctrl+Shift+` 눌러서 터미널 창을 켠다.

 

2) dotnet new console을 입력한다. 

dotnet : 'dotnet' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오. 

만약 환경변수 설정을 제대로 했음에도 위와 같은 에러가 발생했다면 재부팅하면 된다.

 

3) dotnet run을 입력해서 코드를 실행시킨다.

 

 

'Coding > Reference' 카테고리의 다른 글

Visual Studio Code에서 JavaScript 실행  (0) 2021.09.10
[JavaScript] 입출력  (0) 2021.09.10
JavaScript 사용할 때 주의할 점  (0) 2021.08.24

 

sort() 메서드는 배열의 요소를 정렬한다.

※  sort()는 원래 배열을 덮어쓴다.

 

정렬 순서는 알파벳 또는 숫자가 될 수 있으며 오름차순 또는 내림차순이 될 수 있다.

기본적으로 sort() 메서드는 값을 알파벳 및 오름차순으로 문자열로 정렬한다.

const days = ['Mon', 'Wed', 'Fri', 'Sun'];

days.sort();

console.log(days);

// ["Fri", "Mon", "Sun", "Wed"] 출력

 

 

그러나 숫자를 문자열로 정렬하면 2가 1보다 크기 때문에 25가 100보다 크다.

이 때문에 sort() 메서드는 숫자를 정렬할 때 잘못된 결과를 생성한다.

const arr = [1, 3, 40, 25, 100];

arr.sort();

console.log(arr);

// [1, 100, 25, 3, 40] 출력

 

 

 

이 문제는 비교 함수를 작성하여 해결할 수 있다.

 

1. 비교 함수

  -  문자열

var strings = ['Mon', 'Wed', 'Fri', 'Sun'];

function compareStr(a, b) {
	if (a < b) {
		return -1;
	}
	if (a > b) {
		return 1;
	}
	// a == b
	return 0;
}

strings.sort(compareStr);

console.log(strings);

// ["Fri", "Mon", "Sun", "Wed"] 출력

 

 

  -  숫자

var numbers = [1, 3, 40, 25, 100];

function compareNum(a, b) {
	return a - b;
}

numbers.sort(compareNum);

console.log(numbers);

// [1, 3, 25, 40, 100] 출력

 

 

2. 인라인 비교 함수

var numbers = [1, 3, 40, 25, 100];

numbers.sort(function(a, b) {
	return a - b;
});

console.log(numbers);

// [1, 3, 25, 40, 100] 출력

 

 

 

 

3. 화살표 함수

let numbers = [1, 3, 40, 25, 100];

numbers.sort((a, b) => a - b);

console.log(numbers);

// [1, 3, 25, 40, 100] 출력

 

 

 

오름차순, 내림차순

※  문자열 비교함수

  -  오름차순 정렬은 a < b일 때 -1 리턴, a > b일 때 1 리턴

  -  내림차순 정렬은 a < b일 때 1 리턴, a > b일 때 -1 리턴

 

※ 숫자 비교함수

  -  오름차순 정렬은 a - b

  -  내림차순 정렬은 b - a

 

(혹은 오름차순으로 정렬된 배열에 reverse() 메서드 사용)

 

 

+ Recent posts