sessionStorage.setItem will store a String, so technically the answer is no. However, you can use a wrapper for sessionStorage, like:
SessionStorage = {
    setItem: function(key, value) {sessionStorage.setItem(key, value)},
    getItem: function(key) {
        var value = sessionStorage.getItem(key);
        if (value.startsWith("function")) {
            return eval("(" + value + ")()")
        }
        return value;
    }
}
Use it like this:
SessionStorage.setItem('user', function myfync() {alert("Hi")});
and test it like this:
SessionStorage.getItem('user');
EDIT
I was asked in the comment-section about localStorage, so let's implement a wrapper for that as well:
LocalStorage = {
    setItem: function(key, value) {localStorage.setItem(key, value)},
    getItem: function(key) {
        var value = localStorage.getItem(key);
        if (value.startsWith("function")) {
            return eval("(" + value + ")()")
        }
        return value;
    }
}
Use it like this:
LocalStorage.setItem('user', function myfync() {alert("Hi")});
and test it like this:
LocalStorage.getItem('user');