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;