Чтобы устранить путаницу, мы можем попробовать шаг за шагом console.log, чтобы узнать, что произошло.
var a = [function (){this.af = "DDS"}]; // a is an array with function declaration as first element
var b = a[0]; //b is now a function declaration. **Without running nor executing it**
a[0] = new a[0] //By running new a[0] we are creating an instance and
//we replaced with the first element of array
console.log(typeof a[0], a[0].af, typeof b, b.af)
a[0] is now an instance //{af: 'DDS'}
a[0].af === 'DDS'
b is still a function declaration
b.af will be undefined because b doesn't have a property `af`