네이처리 노트
[javascript] function 생성자함수 본문
728x90
반응형
공부하면서 정리한 내용입니다
참고한 내용은 맨 아래의 링크를 확인해주세요
function Person() {
this.name = "annonymous";
this.sayHello = function() {
console.log("Hello, my name is" + this.name);
}
}
function Yoda() {
let obj = new Person();
obj.name = "Yoda";
return obj;
}
let uuu = new Yoda();
uuu.sayHello(); // Hello, my name isYoda
console.log(uuu instanceof Yoda); // false
console.log(uuu instanceof Person); // true
▲ uuu의 인스턴스는 Yoda가 아닌 Person으로 나옵니다.
이러한 문제 때문에 function에서 기본적으로 제공하는 prototype을 이용한 방법이 등장 하였습니다.
let person = {
name: "annoymous",
sayHello: function() {
console.log("Hello, my name is " + this.name);
}
};
function Yoda() {
this.name = "Yoda";
}
Yoda.prototype = person;
let yoda = new Yoda();
yoda.sayHello(); // Hello, my name is Yoda
person.sayHello(); // Hello, my name is annoymous
console.log(yoda instanceof Yoda); // true
console.log(yoda instanceof person); // Right-hand side of 'instanceof' is not callable
▲ person이 함수형태가 아니기 때문에, instanceof Person를 이용한 부모객체 확인이 불가능합니다.
console.log(uuu);
instanceof
이 연산자를 사용하면 객체가 특정 클래스에 속하는지 아닌지를 확인할 수 있습니다. 상속 관계도 확인해줍니다.
console.log(변수 instanceof Class_name); // boolean
console.log([1,2,3] instanceof Array); // true
console.log([1,2,3] instanceof Object); // true
Array는 프로토타입 기반으로 Object를 상속받습니다.
Reference
728x90
반응형
'개발기록 > Javascript' 카테고리의 다른 글
[javascript] function.prototype.apply() (0) | 2022.09.05 |
---|---|
[javascript] function 상속 (0) | 2022.09.05 |
[javascript] function prototype (0) | 2022.09.03 |
[javascript] function closures 간단정리 (0) | 2022.09.03 |
[javascript] function return문 (0) | 2022.09.02 |
Comments