상속, prototype

허성진·2021년 10월 3일
0

상속, prototype

const user = {
  name: "Mike",
};

user.name; // "Mike"

user.hasOwnProperty("name"); // true

user.hasOwnProperty("age"); // false

const user = {
  name: "Mike",
  hasOwnProperty: function () {
    console.log("haha");
  },
};

user.hasOwnProperty(); // "haha"

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

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

const benz = {
  color: "black",
};

const audi = {
  color: "blue",
};

bmw.__proto__ = car;

benz.__proto__ = car;

audi.__proto__ = car;

car를 상속한다

const x5 = {
  color: "white",

  name: x5,
};

x5.proto = bmw;

상속은 계속 이어질수있다.proto

car => bmw => x5 차례로 상속된다.

프러퍼티를 찾을떄는 아래에서 위로 올라가는 구조이다. x5 => bmw => car

prototype chain

for (const p in x5) {
  if (x5.hasOwnProperty(p)) {
    console.log("o", p);
  } else {
    console.log("x", p);
  }
}

```o는 x5가 직접적으로 가지고 있는 property이고

x는 x5가 상속받은 property이다.
> 
o color
o namex
x navigation
x wheels
x drive



위에 코드를 밑에 코드처럼 한번에 작성할수 있다.

 

```js
Bmw.prototype = {
  constructor: Bmw,
  wheels : 4,
  drive = function(){
      console.log("drive..")
  },
  navigator : 1,
  stop = function(){
    console.log("stop..")
  },
}
const x5 = new Bmw("red");
const z4 = new Bmw("blue");

const x5.__proto__ = car;
const z4.__proto__ = car;
profile
궁굼하면 눌러봐

0개의 댓글