본문 바로가기
IT/JavaScript

객체지향적 프로그래밍

by 봉즙 2020. 7. 2.

함수를 생성자로 사용하여 프로그래밍하는 것은 생성된 함수는 new로 호출되며 직접호출도 가능하게 되는데 new와 직접호출시에 this에 바인딩되는 객체가 달라지기에 생성자로 사용되는 함수는 대문자로 표기하며 사용을 추천하지 않는다.

Function.prototpe.method = function(name, func) {
	if (!this.prototype[name]) {
    	this.prototype[name] = func;
    }
}

위의 함수를 이용하면 다음과 같이 사용할 수 있다.

Person() 안에 setter나 getter를 사용하게 되면 new Person(); 사용시 여러개의 함수를 가지게 된다. prototype 사용시 함수객체를 여러개 생성할 필요 없이 프로토 타입 체인으로 접근한다.

Function.prototype.method = function(name, func) {
	this.prototype[name] = func;
};

function Person(arg) {
	this.name = arg;
};

Person.method("setName", function(value) {
	this.name = value;
});

Person.method("getName", function() {
	return this.name;
});

const me = new Person("me");
const you = new Person("you");

또는

function Person() {

name: this.name;

age: this.age;

}

Person.prototype.sayHello = function() {

alert('hello');

};

// 자식 함수를 정의하고 부모의 생성자를 불러옵니다.

function Student() {

Person.call(this);

}

// Person을 프로토타입을 이용해 상송합니다.

Student.prototype = new Person();

// 생성자 포인터를 자식함수로 새롭게 지정합니다.

Student.prototype.constructor = Student;

// 메서드를 재정의합니다.

Student.prototype.sayHello = function() {

alert('hi, I am a student');

};

// 새로운 메서드를 자식함수에 추가합니다.

Student.prototype.sayGoodBye = function() {

alert('goodBye');

};

'IT > JavaScript' 카테고리의 다른 글

object groupby  (0) 2020.07.19
호이스팅  (0) 2020.07.02
클로저  (0) 2020.06.30
with  (0) 2020.06.30
import / export  (0) 2020.06.30

댓글