■ Front-End ■/JavaScript

[JavaScript] 자바스크립트 핵심 가이드 (8장 ~ 10장) - 3/3

한길(One Way) 2023. 3. 2.

개요

자바스크립트의 마스터라고 불리는 더그라스 크락포드가 집필한 서적이다. 자바스크립트 언어에 대해서 제대로 공부를 하려고 하면 이 책은 한번 정도 읽어두어야 한다. 

책 소개

자바스크립트를 우수한 객체지향 언어로 만들 수 있는 장점을 담았다. 장점인 함수느슨한 변수 타입 검사동적 객체객체 리터럴 표현식 등과 대표적인 단점인 전역변수에 근거한 프로그래밍 모델 등을 피하는 방법을 다룬다. 장단점을 비교해 자바스크립트 언어의 단점은 피하고 장점은 살리는 코드 작성을 익힐 수 있다.

 

저자

더글라스 크락포드 (Douglas Crockford)

2008년 야후! 에서! 선임 자바스크립트 아키텍트로 일한다. JOSN(JavaScript Object Notation) 형식을 창안한 사람으로 잘 알려졌으며 콘퍼런스에서 자바스크립트의 고급 주제들에 대한 강연을 정기적으로 진행하고 ECMAScript 위원회에도 참여한다.

 

8장 메서드... continue

객체(Object)

object.hasOwnProperty(name)

hasOwnProperty 메서드는 객체가 매개변수 name과 같은 이름의 속성이 있는지를 확인한다.

var a = {member: true};
var b = Object.beget(a);              // from Chapter 3
var t = a.hasOwnProperty('member');   // t is true
var u = b.hasOwnProperty('member');   // u is false
var v = b.member;                     // v is true

 

정규 표현식 객체(RegExp)

regexp.exec(string)

exec 메서드는 정규 표현식을 사용하는 메서드들 중에서 느리지만 가장 강력하다.

 

regexp.test(string)

test 메서드는 정규 표현식을 사용하는 메서드들 중에서 가장 간단하고 빠르다.

 

 

문자열(String)

 string.charAt(pos)

charAt 메서드는 문자열에서 pos 위치에 있는 문자를 반환한다.

 

var name = 'Curly';

var initial = name.charAt(0);    // initial is 'C'

  

string.charCodeAt(pos)

charCodeAt 메서드는 같은데 다만 문자열 대신 해당 위치 문자의 코드를 반환한다.

 

var name = 'Curly';

var initial = name.charCodeAt(0);    // initial is 67 

 

string.concat(string..)

concat 메서드는 자신과 인수로 넘어온 문자열을 연결하여 새로운 문자열을 만든다.

 

var s = 'C'.concat('a', 't');    // s is 'Cat' 

 

string. indexOf(searchString, position)

indexOf 메서드는 문자열에서 searchString을 검색한다.

찾게 되면 첫 번째로 일치하는 문자의 위치를 반환하며 그렇지 않은 경우엔 -1을 반환한다.

 

var text = 'Mississippi';

var p = text.indexOf('ss');    // p is 2

p = text.indexOf('ss', 3);     // p is 5

p = text.indexOf('ss', 6);     // p is 1 

 

string.lastIndexOf(searchString, posotion)

lastIndexOf 메서드는 검색을 문자열의 앞이 아니라 뒤에서부터 시작한다.

찾게 되면 첫 번째로 일치하는 문자의 위치를 반환하며 그렇지 않은 경우엔 -1을 반환한다.

 

var text = 'Mississippi';

var p = text.lastIndexOf('ss');    // p is 5

p = text.lastIndexOf('ss', 3);     // p is 2

p = text.lastIndexOf('ss', 6);     // p is 5 

 

string.localeCompare(that)

localeCompare 메서드는 문자열을 매개변수 that 문자열과 비교한다.

var m = ['AAA', 'A', 'aa', 'a', 'Aa', 'aaa'];
m.sort(function (a, b) {
    return a.localeCompare(b);
});
// m (in some locale) is
//      ['a', 'A', 'aa', 'Aa', 'aaa', 'AAA']

 

string.match(reqexp)

match 메서드는 정규 표현식과 일치하는 부분을 문자열에서 찾는다. 

 

string.replace(searchValue, replacevalue)

replace 메서드는 문자열을 대상으로 검색 및 대체 작업을 실행하여 새로운 문자열을 생성한다.

 

var result = "mother_in_law".replace('_', '-'); 

 

string.search(regexp)

search 메서드는 문자열 대신에 정규 표현식 객체를 인수로 받는 것을 제외하면 indexOf와 같다.

 

var text = 'and in it he says "Any damn fool could';

var pos = text.search(/["']/);    // pos is 18

  

string.slice(start, end)

slice 메서드는 문자열의 일부분을 복사하여 새로운 문자열을 만든다. 

var text = 'and in it he says "Any damn fool could';
var a = text.slice(18);
// a is '"Any damn fool could'
var b = text.slice(0, 3);
// b is 'and'
var c = text.slice(−5);
// c is 'could'
var d = text.slice(19, 32);
// d is 'Any damn fool'

  

string.split(separator, limit)

split 메서드는 구분자로 문자열을 쪼개어 각각의 항목이 담긴 배열을 생성한다.

옵션인 limit는 나눌 개수를 지정한다. 

var digits = '0123456789';
var a = digits.split('', 5);
// a is ['0', '1', '2', '3', '456789']
 
var ip = '192.168.1.0';
var b = ip.split('.');
// b is ['192', '168', '1', '0']
 
var c = '|a|b|c|'.split('|');
// c is ['', 'a', 'b', 'c', '']
 
var text = 'last,  first ,middle';
var d = text.split(/\s*,\s*/);
// d is [
//    'last',
//    'first',
//    'middle'
// ]
 
var f = '|a|b|c|'.split(/\|/);
// f is ['a', 'b', 'c'] on some systems, and
// f is ['', 'a', 'b', 'c', ''] on others

  

string.substring(start, end)

substring 메서드는 음수로 된 매개변수를 반환하지 않는 점을 빼면 slice 메서드와 같다. 

 

string.toLocaleLowerCase()

toLocaleLowerCase 메서드는 로케일 규칙을 사용하여 문자열을 소문자로 변환한 새로운 문자열을 반환한다.

 

 

string.toLocaleUpperCase()

toLocaleUpperCase 메서드는 로케일 규칙을 사용하여 문자열을 대문자로 변환한 새로운 문자열을 반환한다.

 

 

string.toLowerCase()

toLowerCase 메서드는 문자열을 소문자로 변환하여 반환한다.

 

 

string.toUpperCase()

toUpperCase 메서드는 문자열을 대문자로 변환하여 반환한다.

 

 

string.fromCharCode(char..)

fromCharCode 메서드는 인수로 넘어온 숫자 값들을 문자열로 변환하여 반환한다.

 

var a = String.fromCharCode(67, 97, 116);

// a is 'Cat' 

 

9장 스타일

좋은 프로그램은 미래에 수정할 여지가 있다는 것을 감안한 구조를 갖는다.

프로그램을 잘 표현하면 명확히 이해할 가능성이 높아지고 그로 인해 변경이나 오류 수정을 쉽게 할 수 있다이를 위해 엄격한 규칙을 정하고 소스코드를 작성해야 한다.

 

소프트웨어가 오랜 기간 동안 가치를 유지할 수 있는 것은 소스코드의 품질이다.

일관된 프로그램 작성 스타일은 소스코드의 가독성을 높여준다. 

 

10장 아름다운 속성에 대한 단상

일급객체인 함수

단순화된 자바스크립트에서 함수는 어휘적 유효범위를 갖는 람다다.

 

프로토타입으로 상속을 하는 동적 객체

객체는 클래스가 필요 없습니다어떤 객체든지 단순히 할당하는 식으로 추가할 수 있다.

 

객체 리터럴과 배열 리터럴

새로운 객체와 배열을 생성하는 매우 편리한 표기법이다.

 

제대로 된 기능을 하는 프로그램을 설계하는 것이 기능만 많은 프로그램을 설계하는 것보다 훨씬 어렵다기능을 추가하기 위해서는 명세를 정의하고 설계하고 개발하는 비용이 필요하다.

728x90

댓글