prototype(유전자)
-객체들이 공통적으로 사용하는 속성값
프로토타입을 사용하지 않고, 생성자 함수 안에서 메소드를 직접 정의한다면 어떤 비효율?
- 객체를 생성할때마다 중복적인 메소드로 인해, 메모리 낭비가 생김
그 비효율을 프로토 타입을 통해 어떻게 극복했는지?
-객체들이 공통으로 사용하는 속성값(프로토타입)을 정의해서, 객체 안에 일일이 메소드를 쓰는 과정을 생략해, 효율적인 메모리 사용가능
function Person(name,first,second){
this.name =name;
this.first=first;
this.second=second;
}
//형태 <생성자함수.prototype.함수이름>
Person.prototype.sum=function(){
return 'prototype : '+(this.first+this.second);
}
let kim = new Person('kim',10,20);
kim.sum = function(){
return 'this : '+(this.first+this.second);
}
let lee = new Person('lee',10,10);
console.log("kim.sum()",kim.sum());// 먼저 자신(kim)이 sum이라는 객체를 가졌는지를 찾는다, 끝
console.log("lee.sum()",lee.sum());// 만약 자신(lee)이 sum이라는 객체를 가지지 않는다면, prototype의 sum메소드를 따라간다,끝
//kim.sum() this : 30
//lee.sum() prototype : 20
'Javascript' 카테고리의 다른 글
Class Inheritance(상속) (0) | 2023.03.12 |
---|---|
Class (+constructor 생성자함수) (0) | 2023.03.11 |
Constructor function(=생성자 함수, 객체를 찍어내는 함수) (0) | 2023.03.11 |
this (=나, this가 속해있는 메소드가 속해있는 객체를 가리킴) (0) | 2023.03.11 |
Built-in Object(=내장 객체) (0) | 2023.03.11 |