상속과 prototype

장돌뱅이 ·2022년 3월 18일
0

JavaScript

목록 보기
46/46
const user = {
  name: "mike",
};

console.log(user.hasOwnProperty("name")); // true,
console.log(user.hasOwnProperty("age")); // false

hasOwnProperty(): 객체가 프로퍼티를 가지고 있는지 확인하는 메소드, true, false 반환
__proto__ 라는 객체를 프로토타입이라고 한다. 객체에서 프로퍼티를 읽으려고 하는데 없으면 여기서 찾는다.

const car = {
  wheels: 4,
  drive() {
    console.log("drive....");
  },
};

const bmw = {
  color: "red",
  navigation: 1,
};

bmw.__proto__ = car;  // bmw가 car의 상속을 받게된다.(= car가 bmw의 프로토타입이 된다.) 

bmw.wheels 를 작성하면 bmw 객체 내부에서 wheels 프로퍼티를 찾는다. 있으면 바로 찾는것이고 없으면 프로토타입에서 확인한다. 상속은 계속 이어질 수 있다.

const car = {
  wheels: 4,
  drive() {
    console.log("drive....");
  },
};

const bmw = {
  color: "red",
  navigation: 1,
};

bmw.__proto__ = car;

const x5 = {
  color: "white",
  name: "x5",
};

x5.__proto__ = bmw;
console.log(x5.navigation); //1

for (property in x5) {
  if (x5.hasOwnProperty(property)) {
    console.log("o " + property);
  } else {
    console.log("x " + property);
  }
}
//o color
//o name
// x navigation
// x wheels
// x drive

hasOwnProperty는 객체가 직접 갖고있는 프로퍼티만 true를 반환한다.

//객체 생성(공통 속성 가짐)
const car = {
  wheels: 4,
  drive() {
    console.log("drive....");
  },
};

//생성자함수
const Bmw = function (color) {
  this.color = color;
};

//Bmw.prototype.wheels = 4;

const x5 = new Bmw("red");
const x4 = new Bmw("blue");

x5.__proto__ = car;

0개의 댓글

관련 채용 정보