"
defineProperty", он декларирует свойство, а не устанавливает флаги:
Object.defineProperty(window, "deck", {
writable: false,
configurable: false,
value: (function(){
var massOfCards = [];
// здесь заполняем массив
return massOfCards;
})()
});
Если пользуетесь современным javascript, то можно и так:
const deck = (function(){
var massOfCards = [];
// здесь заполняем массив
return massOfCards; //Ошибка!
})();
Только одна мелочь: содержимое массива всё равно вы сможете менять, защищаете от перезаписи вы только саму переменную.