pj013
pj013

Reputation: 1419

javascript function call - nested functions

I am trying to implement the following in js:

    function Stack() {
        var top = null;
        var count = 0;

        //returns the total elements in an array
        this.getCount = function() {
            return count;
        }

        this.Push = function(data){
            var node = {
                data: data,
                next: null
            }

            node.next = top;
            top = node;
            count++;

            console.log("top: " + top,"count: " + count); 
        }

    }

    Stack.Push(5);

The call to Stack.Push is throwing an error, I think it is function scoping, right? How can I make the call to the push method?

Upvotes: 0

Views: 67

Answers (2)

Oriol
Oriol

Reputation: 288100

You must create an instance of Stack:

function Stack() {
    var top = null;
    var count = 0;

    //returns the total elements in an array
    this.getCount = function() {
        return count;
    }

    this.Push = function(data){
        var node = {
            data: data,
            next: null
        }

        node.next = top;
        top = node;
        count++;

        console.log("top: " + top,"count: " + count); 
    }

}
var instance = new Stack();
console.log(instance.Push(5));

Upvotes: 0

Sterling Archer
Sterling Archer

Reputation: 22395

You need to create an object instance of the function

var stack = new Stack();
stack.push(5);

Upvotes: 1

Related Questions