본문 바로가기

javaScripts

About Object

1. OOP (Object Oriented Programming)란?

실제 세계를 모델링하여 소프트웨어를 개발하는 방법이며 다음과같은 3대 특성을 갖는다.

1) 캡슐화 : 

데이터를 감추고 외부 세계와의 상호작용은 메소드를 통해서만 하는 방법

2) 상속

이미 작성된 클래스를 이어받아 새로운 클래스를 생성하는 기법으로, 기존 코드를 재활용해 사용할 수 있다.

3) 다형성

하나의 이름 (메소드, 함수 등등)으로 많은 상황에 대처하는 기법으로, 동일한 작업을 하는 함수들에 똑같은 이름을 부여할 수 있으므로 코드가 더 간단해지는 효과가 있다.

 

(장점) 코드의 재활용성이 높다.

            코딩이 절차지향보다 간편하다.

            디버깅이 쉽다.

(단점) 처리속도가 절차지향보다 느리다

            설계에 많은 시간이 소요된다.

 

2. JavaScript에서 Object를 생성하는 여러가지 방법

1) Functional

Var Car = function() {

    var someInstance = {};

    someInstance.position = 0;

    someInstance.move = function() {

        this.position += 1;

    }

    return someInstance;

};

 

var car1 = Car();

var car2 = Car();

car1.move();

 

2) Functional Shared

var extend = function(to, from) {

    for (var key in from) {

        to[key] = from[key];

    }

};

 

var someMethods = {};

someMethods.move = function() {

    this.position += 1;

};

 

var Car = function(position) {

    var someInstance = {

        position: position

    };

    extend(someInstance, someMethods);

    return someInstance;

};

 

var car1 = Car(5);

var car2 = Car(10);

 

=> Functional Shared 방식은 메모리의 효율을 좋게 만들어준다.

 

3) Prototypal

var someMethods = {};

someMethods.move =function() {

    this.position += 1;

};

 

var Car = function(position) {

    var someInstance = Object.create(someMethods);

    someInstance.position = position;

    return someInstance;

};

 

var car1 = Car(5);

var car2 = Car(10);

 

4) Pseudoclassical

var Car = function(position) {

   this.position = position;

};

 

Car.prototype.move = function() {

   this.position += 1;

};

 

var car1 = new Car(5)

var car2 = new Car(10)

 

3. Prototype in  JavaScript

1) Prototype Object

객체는 언제나 함수(function)로 생성됩니다.

ex ) 

function Person() {};

 

var personObject = new Person();

 

함수가 정의될 때는 다음과 같은 2가지 일이 이루어집니다

첫번째로, 해당함수에 Constructor 자격이 부여됩니다.

Constructor 자격이 부여되면 new를 통해 객체를 만들어 낼 수 있게됩니다.

두번째로, 함수만 생성되는 것이 아니라 Prototype Object도 같이 생성이 됩니다.

그리고 생성된 함수는 prototype이라는 속성을 통해 prototype Object에 접근할 수 있습니다.

 

2) Prototype Link

- 프로토타입 체인 : proto 속성을 통애 상위 프로토타입과 연결되어있는 형태

 

 

'javaScripts' 카테고리의 다른 글

Inheritance Patterns  (0) 2020.01.11
__proto__, constructor, prototype 의 관계  (0) 2020.01.03
12/26  (0) 2019.12.26
12/25  (0) 2019.12.25