Update: it was really the comma before the that variable assignment which threw me off, not so much about any patterns.  (don't use this notation.  see https://stackoverflow.com/a/38893132/244811 for more information)
So I was reading this article about Javascript's inheritance mechanisms, one of which is the "functional inheritance" pattern. The code example given (my //wtf's):
var vehicle = function(attrs) {
    var _privateObj = {
        hasEngine: true
    },
    that = {};  //wtf??
    that.name = attrs.name || null;
    that.engineSize = attrs.engineSize || null;
    that.hasEngine = function () {
        alert('This ' + that.name + ' has an engine: ' + _privateObj.hasEngine);
    };
    return that;
}
var motorbike = function () {
    // private
    var _privateObj = {
        numWheels: 2
    },
    // inherit
    that = vehicle({
        name: 'Motorbike',
        engineSize: 'Small'
    });  //wtf??
    // public
    that.totalNumWheels = function () {
        alert('This Motobike has ' + _privateObj.numWheels + ' wheels');
    };
    that.increaseWheels = function () {
        _privateObj.numWheels++;
    };
    return that;
};
var boat = function () {
    // inherit
    that = vehicle({
        name: 'Boat',
        engineSize: 'Large'
    });    //wtf??
    return that;
};
myBoat = boat();
myBoat.hasEngine(); // This Boat has an engine: true
alert(myBoat.engineSize); // Large
myMotorbike = motorbike();
myMotorbike.hasEngine(); // This Motorbike has an engine: true
myMotorbike.increaseWheels();
myMotorbike.totalNumWheels(); // This Motorbike has 3 wheels
alert(myMotorbike.engineSize); // Small
myMotorbike2 = motorbike();
myMotorbike2.totalNumWheels(); // This Motorbike has 2 wheels
myMotorbike._privateObj.numWheels = 0; // undefined
myBoat.totalNumWheels(); // undefined
with the conclusion:
You can see that it is fairly easy to provide encapsulation. The _privateObj can not be modified from outside of the object, unless exposed by a public method like increaseWheels(). Similarly, private values can also only be read when exposed by a public method, such as motorbike’s totalNumWheels() function.
Each and every function here seems to declare a global variable "that", which you should never do - right?  There are no closures that I can see (inner function has access to whatever variables were in scope at the time of the inner function's declaration).  Is there a closure mechanism I'm missing? Does this code illustrate a valid pattern?
 
     
    