WEB/Java Script

[Java Script] 객체 생성자/ 프로토타입 공유/ 상속

자바칩 프라푸치노 2021. 4. 23. 20:47

객체 생성자

function Animal(type,name,sound){
  this.type = type;
  this.name = name;
  this.sound = sound;
  this.say = function(){
    console.log(this.sound);
  }
}

const dog = new Animal('개', '멍멍이','멍멍');
const cat = new Animal('고양이', '야옹이','야옹');
dog.say();
cat.say();

객체를 생성한다.

파라미터로 받은 값을 넣어서 만들고

say라는 익명함수를 만들었다.

그런데 매번 함수가 새로 만들어지니까 객체마다 같은 함수를 가지도록 해보자


프로토타입을 사용한다. 

Animal.prototype.say = function(){
  console.log(this.sound);
}
function say (){
  console.log(this.sound)
;}
dog.say = say;
cat.say = say;

위 코드와 아래 코드는 같은 뜻이다.

 

Animal.prototype.sharedValue = 1;

상속

function Dog(name, sound){
  this.type = '개';
  this.name = name;
  this.sound = sound;
}

function Cat(name, sound){
  this.type = '고양이';
  this.name = name;
  this.sound = sound;
}

상속을 받지 않으면 이렇게 유사한 객체를 계속 만들어야한다.

function Dog(name, sound){
  Animal.call(this, '개', name, sound);
}
function Cat(name, sound){
  Animal.call(this, '고양이', name, sound);
}
Dog.prototype = Animal.prototype;
Cat.prototype = Animal.prototype;

프로토타입을 공유했다.

 

728x90