개발일지

javascript를 java 처럼.

OneEgg 2017. 5. 18. 17:48

일자 : 2017. 5. 18(목)


목표 : javascript를 java 클래스 처럼 사용해 보자. (알고리즘 공부를 위함)

- 주력으로 사용하는 언어는 javascript인데 자료는 java밖에 없다. 

- ECMA표준이 재정의 되면서 class처럼 사용할 수 있다고 하니 이를 활용해 보자.


수행결과 :

- emca 2015부터 사용이 가능하다고 하니, 호완성이 해결되지 않아 babel 같은 것이 필요 할 것 같다.

- 조금더 사용해 보아야 하겠지만, java로 하던것을 모두 할 수 있을것 같다. (다음번에 후기 예정)

class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  
  get area() {
    return this.calcArea();
  }

  calcArea() {
    return this.height * this.width;
  }
}

const square = new Rectangle(10, 10);

console.log(square.area);

( 참고자료 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript )

(참고자료 : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes )



class 문법을 이용하여 binary search tree 뼈대를 만들어 보았다.

트리에 값이 잘 입력되는 것 까지는 확인을 하였으며, 알고리즘 문제를 푸는데 사용을 해도 문제가 없을 것 같다.


class TreeNode{

    constructor(v){
        this.value = v;
        this.left = this.right = null;
    }

    insertNode(v){
        console.log("insertNode");
        var current = this;
        var parent = new TreeNode(null);
        // console.log(current);
        // console.log(parent);

        while(current !== null){
            if(this.value === v){
                //값을 덧씌우고 반환
                this.value = v;
                return;
            } else if(this.value > v){
                parent = current;
                current = current.left;
            } else{
                parent = current;
                current = current.right;
            }
        }

        var t = new TreeNode(v);
        if(t.value < parent.value){
            parent.left = t;
        } else{
            parent.right = t;
        }
    }
}

var t = new TreeNode(5);
console.log(t);
t.insertNode(3);
t.insertNode(8);
t.insertNode(1);
t.insertNode(2);
t.insertNode(9);
console.log(t);


(참고자료 : https://www.sitepoint.com/object-oriented-javascript-deep-dive-es6-classes/ )