class - 모델
instances - 모델을 바탕으로 한 객체
여기서 인스턴스가 생성하는 코드로 객체지향 프로그래밍에서는 생성자(constructor) 함수라고 한다. (생성자 함수는 return 하지 않는다.)
class Shoes {
constructor(brand, name, color) {
//인스턴스가 만들어질 때 실행하는 코드
}
}
let nike = new Shoes('nike','nikeair', 'white')
let adidas = new Shoes('adidas', 'yeezy', 'black')
위의 코드를 보면 nike, adidas의 인스턴스는 Shoes라는 클래스의 속성과 메소드를 갖게 된다.
아래에 new 키워드는 인스턴스를 만들 때 사용하고 생성자 함수를 실행해준다.
class Shoes {
constructor(brand, name, color){
this.brand = brand
this.name = name
this.color = color
}
}
생성자 함수에서 등장하는 this라는 키워드는 인스턴스 객체를 의미한다. 들어오는 파라미터 값은 인스턴스 생성시 지정하는 값으로 생성된 인스턴스에 해당 브랜드, 이름, 색상 등을 부여하겠다는 의미이다.
this에 값을 할당해주는 것이다.
class Shoes {
constructor(brand, name, color){
this.brand = brand
this.name = name
this.color = color
}
comfort() {
}
run() {
}
}
comfort(),run()는 메소드이다. 객체에 딸린 함수라고 할 수 있다.
brand, name, color는 속성이다.
속성과 메소드를 기반으로 이제 인스턴스에서 사용해 보자.
let nike = new Shoes('nike','nikeair', 'white')
nike.color // 'white'
nike.run() // run() 메소드라 nike에서 실행
let adidas = new Shoes('adidas', 'yeezy', 'black')
adidas.name // 'yeezy'
adidas.comfort() // comfort()메소드 adidas에서 실행
기타 용어에 대한 설명은 아래 사진을 참고!
function Shoes { //class
constructor(brand, name, color){
this.brand = brand // this객체
this.name = name
this.color = color
} // 생성자(constructor) 함수
// prototype객체 = 여기에 속성이나 메소드를 정의
Shoes.prototype.run = function() {
console.log(this.name + '가 달리기를 시작합니다')
}
//nike는 인스턴스
let nike = new Shoes('nike','nikeair', 'white')
nike.color // 'white'
nike.run() // run() 메소드라 nike에서 실행
이러한 생성자 함수는 배열의 인스턴스를 생성하는 것과 동일한다.
let arr = new Array('hello','world')
arr.length // 2
arr.push('!')