개발자 미니민의 개발스터디

[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 이게 정적 메소드이다.
인스턴스(생성자를 통해 생성된 객체) 없이, 바로 호출이 가능하다~

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기