継承とプロトタイプ

9623 ワード

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

console.log(user.hasOwnProperty("name")); // true,
console.log(user.hasOwnProperty("age")); // false
hasOwnProperty():オブジェクトにPropertyがあるかどうかを決定するメソッド、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 propertyが検索されます.あれば探し、なければ原型で確認します.継承は続く.
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は、オブジェクトが直接所有するProperty 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;