継承とプロトタイプ
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;
Reference
この問題について(継承とプロトタイプ), 我々は、より多くの情報をここで見つけました https://velog.io/@fizzy/상속-prototypeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol