2012104095.html 1.6 KB
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    function Stack() {

        // 스택 어레이
        this.stack = [];

        // Stack 오브젝트에서 푸시 함수 구현 :: elem 파라미터로 넘어온 element 를 this.stack 어레이에 푸시합니다.
        this.push = function (elem) {
            // push 할 새로운 배열을 만들어 주고
            var pushArray = [elem];
            // 기존 stack array 에 합쳐줍니다.
            this.stack = this.stack.concat(pushArray);
        };

        // Stack 오브젝트에서 팝 함수 구현 :: 마지막 인덱스의 element 를 없애고, 해당 엘리먼트를 리턴합니다.
        this.pop = function () {
            // 스텍 길이 저장
            var stackLength = this.stack.length;
            // 리턴할 마지막 인덱스의 element 저장
            var returnElem = this.stack[stackLength - 1];
            // 스택의 마지막 element 없애기
            this.stack.splice(stackLength - 1, 1);

            // 마지막 인덱스의 element 를 리턴
            return returnElem;

        };
    }

    // 스택 인스턴스 생성
    var stack = new Stack();

    // 스택 인스턴스의 push 함수 호출
    stack.push(1);
    stack.push(2);
    stack.push(3);
    stack.push(4);

    // 스택 인스턴스의 pop 함수를 호출하고 결과값을 console 로 찍기
    console.log(stack.pop());
    console.log(stack.pop());
    console.log(stack.pop());
    console.log(stack.pop());
    console.log(stack.pop());
</script>
</body>
</html>