객체지향 - 생성자와 new 그리고 전역객체
객체 란? 서로 연관된 변수와 함수를 그룹핑한 그릇이라고 할 수 있음.
프로퍼티 (property) : 객체 내의 변수
메소드(method) : 객체 내의 함수
let person = {}
person.name = 'rkhong';
person.introduce = function() {
return 'My name is' + this.name;
}
console.log(person.introduce()); //My name is rkhong
// 객체를 정의할 때 값을 셋팅하도록 코드 변경
let person = {
'name' : 'rkhong',
'introuduce' : function() {
return 'My name is' + this.name;
}
}
console.log(person.introduce()); //My name is rkhong
생성자
- 객체의 정의를 반복해야 할 경우 객체의 구조를 재활용할 수 있는 방법
- 객체를 만드는 역할을 하는 함수
자바스크립트에서 함수는 재사용 가능한 로직의 묶음이 아닌 객체를 만드는 창조자
// new를 붙이면 새로운 객체를 만든 후 이를 리턴함.
// (** 별로 개선된 것이 없음)
function Preson() {
let p1 = new Person();
p1.name = 'rkhong';
p1.introduce = function() {
return 'My name is' + this.name;
}
console.log(p1.introduce()); //My name is rkhong
let p2 = new Person();
p2.name = 'rk';
p2.introduce = function() {
return 'My name is' + this.name;
}
console.log(p2.introduce()); //My name is rk
}
// 생성자 내에서 이 객체의 프로퍼티를 정의하고 있음. => 초기화 -> 코드의 재사용성이 높아짐.
// 생성자 함수는 일반함수와 구분하기 위해 첫글자를 대문자로 표시
function Person(name) {
this.name = name;
this.introduce = function() {
return 'My name is' + this.name;
}
}
let p1 = new Person('rkhong');
console.log(p1.introduce()); //My name is rkhong
let p2 = new Person('rk;);
console.log(p2.introduce()); //My name is rk
자바스크립트의 생성자의 특징
- 일반적인 객체지향 언어에서 생성자는 클래스의 소속이지만 자바스크립트에서 객체를 만드는 주체는 함수임.
- 함수에 new를 붙이는 것은 객체를 만들 수 있다는 점에서 자바스크립트에서 함수의 위상을 암시하며 자바스크립트가 추구하는 자유로움을 보여주는 사례임.
전역객체
전역객체(Global object) : 특수한 객체
모든 객체는 이 전역객체의 프로퍼티임
// func()와 window.func() 모두 실행이 됨.
// 모든 전역변수와 함수는 사실 window 객체의 프로퍼티임. -> 객체를 명시하지 않으면 암시적으로 window의 프로퍼티로 간주함.
function func(){
alert('Hey');
}
func();
window.func();
//자바스크립트에서 모든 객체는 기본적으로 전역객체의 프로퍼티임을 알 수 있음
let a = {'func':function (){
alert('Hey');
}}
a.func();
window.a.func():
전역객체 API
- ECMAScript에서는 전역객체의 API를 정의해둠. (그 외의 API의 경우 호스트 환경에서 필요에 따라 추가로 정의하고 있음)
ex) 웹브라우저 자바스크립트에서는 alert()이라는 전역객체의 메소드가 존재하나, node.js에서는 존재하지 않음. - 전역객체의 이름도 호스트환경에 따라서 다름
ex) 웹브라우저에서 전역객체 -> window / node.js에서 전역객체 -> global
.
.
.
.
Reference
https://opentutorials.org/course/743/6570
https://opentutorials.org/course/743/6577
Author And Source
이 문제에 관하여(객체지향 - 생성자와 new 그리고 전역객체), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rkhong/객체-생성자와-new저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)