Confused about JavaScript prototypal inheritance with constructors
===

I've read pages and pages about JavaScript prototypal inheritance, but I haven't found anything that addresses using constructors that do validation. I've managed to get this constructor to work but I know it's not ideal, i.e. it's not taking advantage of prototypal inheritance:

    function Card(value) {
        if (!isNumber(value)) {
            value = Math.floor(Math.random() * 14) + 2;
        }

        this.value = value;
    }

    var card1 = new Card();
    var card2 = new Card();
    var card3 = new Card();

This results in three Card objects with random values. However, the way I understand it is that each time I create a new Card object this way, it is copying the constructor code. I should instead use prototypal inheritance, but this doesn't work:

    function Card(value) {
        this.value = value;
    }

    Object.defineProperty( Card, "value", {
        set: function (value) {
            if (!isNumber(value)) {
                value = Math.floor(Math.random() * 14) + 2;
            }

            this.value = value;
        }
    });

This doesn't work either:

    Card.prototype.setValue = function (value) {
        if (!isNumber(value)) {
            value = Math.floor(Math.random() * 14) + 2;
        }

        this.value = value;
    };

For one thing, I can no longer call `new Card()`. Instead, I have to call `var card1 = new Card(); card1.setValue();` This seems very inefficient and ugly to me. But the real problem is it sets the value property of each Card object to the same value. Help!