null
null

Reputation: 1092

How to call a object method without object instance?

I have a method loadSet which creates elements with datas from the localstorage, and this should be run on page load i am calling it via

ReminderSet.prototype.loadSet(); // works fine

My question is, is there any other way to call a method that don't need a reference to an object instance? like person1.loadSet(); or should i abandon this and make it as a regular function?

ReminderSet.prototype.loadSet = function() {
    var keys = Object.keys(localStorage),
        i = 0,
        key,
        array;

    for (; key = keys[i]; i++) {
        const setId = localStorage.getItem(key);
        array = JSON.parse(setId); //parse and store key values
        let array_index = 0;
        //Re-create the reminders and set their properties//
        $reminderSection.append($('<div/>').addClass('set').attr('id', key) //Set the ID                      
            .append($('<div/>').addClass('set-title').append($('<h1>').attr('contenteditable', 'true').text(array[array_index].set_title)), //Index is always at 0//
                $('<div/>').addClass('create-reminder-control').append($('<button>').addClass('add-new-reminder').text("+ add new"), $('<input>').addClass('create-reminder-value').attr({ type: "text", placeholder: "get something done" })), $('<div/>').addClass('reminder-lists'), $('<div/>').addClass('save-control').append($('<button>').addClass('save-reminder-button').text('Save'))))

        //Get our key values //
        for (; array_index < array.length; array_index++) {
            /*Select the element id */
            $("#" + key).children('.reminder-lists').append($('<div/>').addClass('a-reminder').attr('contenteditable', 'true').text(array[array_index].description).append($('<div/>').addClass('delete-reminder').text('x'))) //Get the reminders
        } //end

    }
};

Upvotes: 0

Views: 50

Answers (2)

T.J. Crowder
T.J. Crowder

Reputation: 1074666

If loadSet doesn't need or use an instance, it doesn't make any sense for it to be on ReminderSet.prototype. Either make it a standalone function:

function loadSet() {
    // ...
}
// Call it like so:  loadSet();

...or a property on ReminderSet itself:

ReminderSet.loadSet = function() {
    // ...
};
// Call it like so:  ReminderSet.loadSet();

Only put functions on the object that a constructor's prototype property refers to if they need to use this (the instance).

Upvotes: 2

Mark
Mark

Reputation: 92440

You can set the function directly as a property of the other ReminderSet:

ReminderSet.loadSet = function() {//etc.}

Then you can simply call: ReminderSet.loadSet()

Upvotes: 1

Related Questions