반응형

# 자바스크립트 학습

# Object 오브젝트

## 자바스크립트의 오브젝트

  • 자바스크립트의 오브젝트는 , 빌트인 오브젝트 (Built-in Object), 빌트인 오브젝트 (Native Object), 호스트 오브젝트 (Host Object)로 구분한다.
  • 빌트인 오브젝트 : 사전에 만드러 놓은 오브젝트로 빌트인 Number 오브젝트, 빌트인 String 오브젝트 등이 있다.
  • 네이티브 오브젝트 : 자바스크립트 스펙에 정의된 오브젝트이다. 빌트인 오브젝트에 포함되며, 여기에 자바스크립트를 실행 할 때 만드는 오브젝트가 있다. (자바스크립트를 실행 할 때 만드는 오브젝트 : Argument 오브젝트)
  • 호스트 오브젝트 : 빌트인, 네이티브 오브젝트를 제외한 오브젝트이다. (window 오브젝트, DOM 오브젝트가 있다.) 자바스크립트 호스트 환경에서 브라우저의 모든 요소 기술을 연결하고 융합하며 이를 제어한다.
var node = document.querySelector("div");
log(node.nodeName);

=>
DIV
  • (DOM 오브젝트는 주로 마우스 클릭에 대한 인식과 관련)

## 오브젝트와 인스턴스

  • 오브젝트 : new 연산자를 사용하지 않고, 빌트인 오브젝트로 만든 오브젝트를 지칭한다.
var abc = new Object();
var obj = {};

=>
abc, obj 모두 인스턴스를 생성
하지만 abc의 경우 new 연산자를 사용하여 abc 인스턴스라고 부른다.
obj의 경우는 new 연산자를 사용하지 않았으므로 obj 오브젝트라고 부른다.

# 빌트인 Object 프로퍼티 (ES3)

## 프로퍼티 리스트 (ES3)

이름 개요
new Object() 파라미터 데이터 타입의 인스턴스 생성
Object() Object 인스턴스 생성
Object prototype
constructor 생성자
valueOf() 프리미티브 값 반환
hasOwnProperty() 프로퍼티 소유 여부 반환
propertyIsEnumerable() 프로퍼티 열거 여부 반환
isPrototypeOf() prototype의 존재 여부 반환
toString() 문자열로 변환
toLocaleString() 지역화 문자열로 변환

# Object 인스턴스 생성

## new Object()

구분 데이터(값)
파라미터 값opt
반환 생성한 인스턴스
  • new 연산자로 Object() 생성자 함수를 호출하면 인스턴스를 생성하여 반환한다.
  • 파라미터의 데이터 타입에 따라서 생성할 인스턴스 타입이 결정된다.
var newNum = new Number(123);
web.log(typeof newNum);
web.log(newNum + 100);

=>
object
223


var newObj = new Object(123);
web.log(typeof newObj);
web.log(newObj + 100);

=>
object
223

new Object는 파라미터의 값에 따라 인스턴스 타입이 결정된다.
new Object의 파라미터 값이 String 이면 String 인스턴스가 생성된다.
  • 파라미터의 값이 undefined, null이면 빈 Object 인스턴스를 반환한다.
var newObj = new Object();
web.log(newObj);

=>
{}

파라미터를 작성하지 않을경우 undefined를 작성한 것과 같으므로,
값을 갖지 않은 Object 인스턴스를 생성하게 된다.

## Object()

구분 데이터(값)
파라미터 값opt
반환 생성한 인스턴스
  • Object() 함수는 Object 인스턴스를 생성한다. (new 연산자를 사용하지 않은 것 뿐)
  • 파라미터에는 {name:value} 형태로 작성한다.
var obj = Object({name: "JS책"});
log(obj);

var emptyObj = Object();
log(emptyObj);

=>
{name: JS책}
{}

## Object 생성 방법

var abc = {};

var abc = Object()

=>
위 두개는 동일하다.
즉, var abc = {} 실행 시 Object 인스턴스가 생성된다.
  • {} (중괄호) 표기는 오브젝트 리터럴(Literal) 이라고 부른다.
var obj = Object({name: "Value"});
log(obj);
log(obj instanceof Object);

=>
{name: value}
true
  • Object() 와 Object 리터럴{} 모두 Object 인스턴스를 생성한다. 그래서 Object()를 사용하지 않고, 간단하게 {}를 사용한다.

## valueOf()

구분 데이터(값)
data Object 인스턴스, 숫자
파라미터 사용하지 않음
반환 프리미티브 값
  • data 위치에 작성한 Object 인스턴스의 프리미티브 값을 반환한다.
var obj = {key: "value"};
log(obj.valueOf());

=>
{key: value}

# 빌트인 오브젝트의 구조

## 빌트인 오브젝트 구조

  • 오브젝트 이름 : Object, String, Number 등등..
  • 오브젝트.prototype
1. prototype은 인스턴스를 생성하는 기준이다. 

2. prototype이 있으면 인스턴스 생성이 가능하고, 없으면 생성할 수 없다. 

3. prototype은 프로퍼티를 연결하는 오브젝트이다. (오브젝트.prototype)
  • 오브젝트.prototype.constructor : 오브젝트 생성자
  • 오브젝트.prototype.method : 메소드 이름과 함수 작성

# 함수와 메소드

## 함수와 메소드 연결

  • 함수의 경우 오브젝트에 연결한다.
Object.create()
  • 메소드는 오브젝트의 prototype에 연결한다.
Object.prototype.toString()

## 함수와 메소드 호출

  • 함수 호출 방법
Object.create();
log(Object.create);
log(Object.prototype.create);

=>
function create() { [native code] }
undefined

해당 함수가 존재하면 함수가 출력,
없으면 undefined 출력
  • 메소드 호출 방법
Object.prototype.toString()

으로 호출 하거나

또는 아래와 같이 인스턴스를 생성하여 호출한다.

log(Object.prototype.toString);

var obj = {};
log(obj.toString);

=>
function toString() { [native code] }
function toString() { [native code] }
  • 함수와 메소드를 구분해야 하는 이유
1. 자바스크립트 코드 작성 방법이 다르기 때문이다.

2. 함수는 파라미터에 값을 작성하고, 메소드는 메소드 앞에 값을 작성하기 때문이다.
log(String.fromCharCode(40, 65));

=>
1A

## 메소드와 메서드

  • 국립국어원 표준국어대사전에서 메소드는 검색되고 메서드는 검색되지 않는다.
  • 메소드는 프로그램과 관련지어 설명하고 있다.
  • 그러므로 되도록이면 메소드로 사용. 그렇다고 해서 메서드가 틀린건 아님(메소드의 발음 기호가 메서드)
반응형

+ Recent posts