프로그래밍/Javascript
자바스크립트 중급 14 - 상속, 프로토타입(Prototype)
mimi04
2023. 6. 16. 15:31
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; //bmw는 car에 상속
const x5 = {
color : "white",
name : "x5",
};
x5.__proto__ = bmw; //x5는 bmw에 상속
//Prototype Chain
▶ for ...in 을 이용해서 객체의 프로퍼티 순환하기
for (p in x5){
console.log(p);
}
x5 : {color: "white", name: "x5"}
Object.keys(x5); → ["color", "name"]
Object.values(x5); → ["white" , "x5"]
→name과 color를 제외한 프로퍼티는 프로토타입에서 정의한 프로퍼티들이다.
▶ for(p in x5){
if(x5.hasOwnProperty(p)) {
console.log('o' , p);
} else {
console.log('x', p);
}
} → color , name
→ hasOwnProperty를 사용하면 객체가 직접 가지고 있는 프로퍼티만 반환해준다.
//생성자 함수 이용
const car = {
wheels = 4;
drive() {
console.log("drive..");
},
};
const Bmw = function(color) {
this.color = color;
};
const x5 = new Bmw("red");
const z4 = new Bmw("blue");
x5.__proto__ = car;
z4.__proto__ = car;
↓ 더 간편히 바꾸기
//생성자 함수 이용
const Bmw = function(color) {
this.color = color;
};
Bmw.prototype.wheels = 4;
Bmw.prototype.drive = function() {
console.log("drive..");
};
const x5 = new Bmw("red");
const z4 = new Bmw("blue");
반응형