[javascript] 객체 프로토타입에 프로퍼티, 메소드 추가 / 정적메소드
by mini_min[javascript] 객체 프로토타입에 프로퍼티, 메소드 추가 / 정적메소드
✔️ 프로토타입에 프로퍼티 및 메소드 추가하기
function User(name) {
this.name = name; //prototype <- 추가
this.age = 20; //prototype <- 추가. 기본값 가질 수 있음
this.state = function() { //prototype <- 추가
return this.age >= 19 ? 'adult' : 'child';
};
}
console.dir(User);
//console.log(User);
//프로토타입에 프로퍼티를 추가하기
User.prototype.score = 80;
//프로토타입에 메소드를 추가하기
User.prototype.msg = function() {
console.log(this.name + ":" + this.state() + " : " + this.score);
};
var obj = new User('가가가');
console.log(obj.name, obj.age, obj.score);
obj.msg();
💡 생성자.prototype.프로퍼티명 = 값;
💡 생성자.prototype.메소드명= 값;
🔒 객체의 프로퍼티나 메소드 추가 : prototype 프로퍼티 이용
//Date 내장객체에 weekday() 메소드를 prototype 에 추가한다.
Date.prototype.weekday = function(){
let w = ['일','월','화','수','목','금','토'];
return w[this.getDay()];
}
var date = new Date();
console.log(date.weekday());
✔️ 정적메소드
: 생성자의 속성에 직접 지정된 메소드를 정적 메소드라고 한다.
: Number, isNaN, Object, getPropertyOf 등의 함수들은 정적 메소드!
: 정적 메소드는 특정 인스턴스에 대한 작업이 아닌, 해당 생성자와 관련된 일반적인 작업을 정의할 때 사용된다.
function User(name) {
this.name = name;
this.getName = function() {
return this.name;
};
}
//정적 메소드 : 생성자의 속성에 직접 작성된 메소드
User.state = function(age) { //생성자 속성에 직접 작성된 메소드
return age >= 19 ? '성인' : '초딩';
};
//console.log(User.getName()); // 객체를 생성해야 접근 가능(new 해야함 this도있어서)
console.log(User.state(20));
💡 User.state 이게 정적 메소드이다.
인스턴스(생성자를 통해 생성된 객체) 없이, 바로 호출이 가능하다~
'JavaScript' 카테고리의 다른 글
[javascript] location 객체 / navigator 객체 (0) | 2022.09.25 |
---|---|
[javascript] 클래스(class) 선언 / 상속 / 프라이빗 (2) | 2022.09.25 |
[javascript] 객체 프로퍼티(속성) 메소드 삭제 / 나열 / 추가 (0) | 2022.09.22 |
[javascript] 객체 - this / 호출 방법에 따른 this / form 요소에서 this (0) | 2022.09.22 |
[javascript] 객체 정의 / 프로토타입 기반 언어 / 객체 만들기 (생성) (0) | 2022.09.22 |
블로그의 정보
개발자 미니민의 개발로그
mini_min