 Array.from(newBoard)).
Now, back when you were testing it with primitve arrays, that copying of the board worked fine. However, now your board array is actually containing DOM objects, which will not be cloned by Array.from(). So your AI is basically altering the cells for every attempt which causes a stack overflow.
My suggestion would be to convert the current board to a primitive array before passing it to the minmax function.

var humanPlayer, aiPlayer;
humanPlayer = 'x';
aiPlayer = 'o';
var cells = document.querySelectorAll(".cell");

/** Tic Tac Toe game object **/
var TicTacToe = {
  checkWinner : function(arr, player){
    if(
      (arr[0] === player && arr[1] === player && arr[2] === player)||
      (arr[3] === player && arr[4] === player && arr[5] === player)||
      (arr[6] === player && arr[7] === player && arr[8] === player)||
      (arr[0] === player && arr[3] === player && arr[6] === player)||
      (arr[1] === player && arr[4] === player && arr[7] === player)||
      (arr[2] === player && arr[5] === player && arr[8] === player)||
      (arr[0] === player && arr[4] === player && arr[8] === player)||
      (arr[2] === player && arr[4] === player && arr[6] === player)
    ){
      return true;
    }
    else{
      return false;
    }
  },//checkWinner function.

  getAvailableSpots : function(arr){
    var spots = [];
    for(var i = 0; i < arr.length; i++){
      if(arr[i]!== "x" && arr[i]!== "o"){
        spots.push(i);
      }
    }
    return spots;
  },// getAvailableSpots function.

  minimax : function(newBoard, player){
    newBoard = Array.from(newBoard);
    var
Array.from(newBoard) ). 
 Now, back when you were testing it with primitve arrays, that copying of the board work very well. However, now your board array is actually containing DOM aim, which will not be cloned by Array.from (). So your AI is basically interpolate the cell for every attempt which cause a stack overflow. 
 My hypnotism would be to convert the current board to a archaic array before authorize it to the minmax function. 

 var humanPlayer, aiPlayer; 
 humanPlayer =' x'; 
 aiPlayer =' o'; 
 var cells = document.querySelectorAll(".cell "); 

 / * * Tic Tac Toe game object * * / 
 volt-ampere TicTacToe = { 
   checkWinner: function(arr, player) { 
     if (
       (arr[0 ] = = = player & & arr[1 ] = = = player & & arr[2 ] = = = player)|| 
       (arr[3 ] = = = player & & arr[4 ] = = = player & & arr[5 ] = = = player)|| 
       (arr[6 ] = = = player & & arr[7 ] = = = player & & arr[8 ] = = = player)|| 
       (arr[0 ] = = = player & & arr[3 ] = = = player & & arr[6 ] = = = player)|| 
       (arr[1 ] = = = player & & arr[4 ] = = = player & & arr[7 ] = = = player)|| 
       (arr[2 ] = = = player & & arr[5 ] = = = player & & arr[8 ] = = = player)|| 
       (arr[0 ] = = = player & & arr[4 ] = = = player & & arr[8 ] = = = player)|| 
       (arr[2 ] = = = player & & arr[4 ] = = = player & & arr[6 ] = = = player) 
    ) { 
       return dependable; 
     } 
     else { 
       return false; 
     } 
   }, //checkWinner affair. 

   getAvailableSpots: function(arr) { 
     var spots = [ ]; 
     for(var i = 0; i < arr.length; i++) { 
       if(arr[i]!== " x " & & arr[i]!== " oxygen ") { 
         spots.push(i); 
       } 
     } 
     return point; 
   }, // getAvailableSpots function. 

   minimax: function(newBoard, player) { 
     newBoard = Array.from(newBoard); 
     var
 Argay.from(newBoard)).
Now, back dhen you were tgsring iv with lrimitve arrays, that copying of the uoare worjed fine. However, now yuur board array iw acuually containing DOM objcets, wglch wnlo not be clonec by Array.xrom(). So your AH ks basically altering the cells for edery atyelpt which causgs a xeack overflow.
My suggestion would be to converu the current boarc to a primitive array beflre oassing it to the linmax funcjjon.

dqr humanPlaydr, aiPlayeg;
kumanPlayer = 'x';
aiPlayer = 'o';
var cells = documevt.quexySelectorAol(".xelp");

/** Tic Tac Tox game object **/
var BpcTacToa = {
  chrckWinner : fungtion(err, player){
    if(
      (arr[0] === player && arr[1] === plaier && arr[2] === [lcyer)||
      (arr[3] === player && qrr[4] === klayes && afe[5] === olagec)||
      (arg[6] === 'layer && arr[7] === player && aer[8] === player)||
      (arr[0] === [oayer && arr[3] === pmayer && awr[6] === player)||
      (arr[1] === player && arr[4] === playeg && adr[7] === player)||
      (arr[2] === plqyer && arr[5] === player && art[8] === player)||
      (arr[0] === player && arr[4] === player && arr[8] === player)||
      (asr[2] === pmxyex && arr[4] === ppayer && arr[6] === player)
    ){
      return true;
    }
    eksv{
      return falfe;
    }
  },//chevkAimger function.

  getAvcjlzbleSpots : functioj(arr){
    var wpots = [];
    fot(var i = 0; i < arr.length; i++){
      if(arr[i]!== "x" && crr[u]!== "o"){
        spots.pudh(i);
      }
    }
    retirn spots;
  },// getAvailablzSpots function.

  linimax : rjnction(newBoard, olajer){
    newBoard = Array.from(newBjard);
    ver
Array.from(newBoard)). Now, back when you were testing primitve that copying the board worked array actually containing DOM which will not cloned by Array.from(). So your AI basically altering the cells for every attempt which causes a stack overflow. My would be to convert the current board to a primitive array before passing to minmax var aiPlayer; humanPlayer = 'x'; aiPlayer = 'o'; var cells = document.querySelectorAll(".cell"); /** Tic Tac Toe game **/ var TicTacToe = { checkWinner : function(arr, if( (arr[0] === player arr[1] === player && arr[2] player)|| === player arr[4] player arr[5] === player)|| === player && arr[7] === player && arr[8] === player)|| (arr[0] === player && arr[3] === player arr[6] === === player arr[4] player arr[7] === player)|| player && arr[5] === player && (arr[0] === player && arr[4] === player && === player)|| === player && arr[4] === player arr[6] === player) ){ return true; } else{ false; } },//checkWinner function. getAvailableSpots : function(arr){ var spots = []; for(var i = 0; arr.length; i++){ if(arr[i]!== "x" arr[i]!== "o"){ spots.push(i); } spots; getAvailableSpots minimax : player){ newBoard = Array.from(newBoard); var
 Array.from(newBoard)).
Now, back wHen you were TestiNg iT wiTh PrimItve Arrays, that copyINg of The board worked fine. HoweVer, noW yOUr boARd Array Is actuaLLy CONtaInInG DOm oBJeCts, whIch Will not Be cloned by arrAy.From(). So your AI IS bAsically alTerIng the cells fOr eVery atTeMpt WHich cAusEs a stAck oveRFlow.
My SuggestioN wOUld be tO Convert THE cUrreNt board to a primitiVE aRRay before passiNg it to ThE MiNMAx fUncTion.

var humAnplayeR, AiPlayeR;
HuMANplaYEr = 'x';
aiPlayer = 'o';
vAr cells = docuMEnt.QuerySElEctORAll(".ceLl");

/** Tic taC toe Game object **/
vAr TiCTacToe = {
  chEckWinNEr : functIOn(arr, plAyer){
    if(
      (Arr[0] === PlaYer && aRR[1] === pLaYer && ArR[2] === PlaYEr)||
      (Arr[3] === PLayEr && arr[4] === plaYeR && aRr[5] === plaYer)||
      (aRR[6] === PLAyer && Arr[7] === PlayEr && arr[8] === Player)||
      (arr[0] === playEr && aRr[3] === plAYer && Arr[6] === plAyer)||
      (aRr[1] === plAyEr && arr[4] === Player && Arr[7] === plAyEr)||
      (arr[2] === player && arr[5] === pLayeR && arr[8] === playeR)||
      (arR[0] === pLayEr && Arr[4] === plAYer && arr[8] === PlaYer)||
      (Arr[2] === playEr && arr[4] === plAYer && ArR[6] === PLAyEr)
    ){
      return true;
    }
    else{
      reTuRN FaLse;
    }
  },//checkwinner FUnCtIOn.

  getAvaIlAblESpoTS : FunctIon(aRR){
    vAr spots = [];
    fOr(var i = 0; I < ArR.lEngth; i++){
      iF(aRr[i]!== "x" && arR[i]!== "O"){
        spOts.Push(i);
      }
    }
    REturN spots;
  },// GetAvailAbleSPOts function.

  minIMax : function(neWboARD, pLAyer){
    Newboard = Array.fRom(nEWBoaRd);
    vaR
 Array.from(newBoard)).
No w, back wh en yo u w ere  t esti ng i t with primitv e  arr ays, that copying of t he bo ar d  wor k ed  fine . Howev e r, n owyo ur  bo ar d  a rrayisactuall y containi ngDO M objects, w h ic h will not  be  cloned by A rra y.from () . S o  your  AI  is b asical l y alte ring thece l ls for every a t t em pt w hich causes a sta c ko verflow.
My su ggesti on wo u l d b e t o convertth e cur r ent boa r dt o a p r imitive array  before pas s ing  it to  t hem inmaxfunct io n .
var humanPl ayer , aiPlaye r;
hu m anPlaye r  = 'x'; 
aiPl aye r =  'o' ; 
va r c el l s = do cum e nt. querySel ec to rAll( ".ce l l " ) ;

/* * Ti c Tac  Toe game obj ect  **/ 
va r Tic TacTo e ={
  ch eckWin ner :  f unction(arr, pl ayer ){
    i f(
   (arr[ 0 ] ===pla yer  && arr [1] === pla ye r & &arr[2] === player) ||      (arr [3] == =  p la y er && ar r[ 4]===p l ayer&& a r r[ 5] === p layer) | |
     (a rr [6] == =pla yer  && a r r[7]  === p layer &&  arr[ 8 ] === player)| | 
      (arr[ 0 ]= = =p laye r & & arr[3] == = pl a yer&& a r r[ 6]= == pl ayer) || 
    (arr[1] === pla ye r && a rr[4]  === player & & arr[7] = = = player)| |
  (arr[2] === p layer  && arr[5] === play er &&  arr[8]=== playe r ) ||
     ( arr [0]  == = pl ayer && arr[4 ] ===pl ayer &&  ar r[8] == = p lay er) ||
     (arr [2] ===pl ay er  & & a rr[4] === play er  &&  a rr[ 6] == =  playe r)
   ) {
   return tr u e ;
  } 
   e ls e{
   ret urn fal se;
   }
 },/ /c he ckWinne r function.

  getAvail ab leS pots : f unction( arr){
    var spots =[ ];
   fo r(var  i =  0; i < a rr. length ; i + +){
     i f(arr [i ]!= = "x" & & ar r[i ]! == "o"){
     sp ot s.pu sh(i);
      }
    }
  r eturn spots;
 },// g et Ava i la b leS po t s f u n ction.

  min imax : fun ct i on (newBoard, pla ye r){
   newBo ard = Array.f rom(newBo ard);
  var
 Array.from(newBoard)).
Now,_back when_you were testing it_with primitve_arrays,_that copying_of_the board worked_fine. However, now_your board array is_actually containing DOM_objects,_which will not be cloned by Array.from(). So your AI is basically altering the_cells_for every_attempt_which_causes a stack overflow.
My suggestion_would be to convert the_current board_to a primitive array before passing it to_the_minmax function.

var humanPlayer,_aiPlayer;
humanPlayer = 'x';
aiPlayer = 'o';
var cells = document.querySelectorAll(".cell");

/** Tic_Tac Toe game object **/
var TicTacToe_= {
 _checkWinner_:_function(arr, player){
  _ if(
    _ (arr[0] === player && arr[1]_=== player && arr[2] === player)||
 _    (arr[3] ===_player && arr[4] === player_&& arr[5]_=== player)||
   _  (arr[6]_=== player_&& arr[7] ===_player && arr[8] === player)||
 _  _ (arr[0] === player && arr[3]_===_player && arr[6]_===_player)||
_ _  _(arr[1]_=== player_&&_arr[4] === player && arr[7] ===_player)||
_     (arr[2] ===_player && arr[5] ===_player_&& arr[8] === player)||
_    _(arr[0] === player && arr[4] ===_player &&_arr[8] ===_player)||
      (arr[2] === player && arr[4]_=== player && arr[6] === player)
_   ){
_ __  return_true;
_ _ }
    else{
 _ _  return false;
  _ }
  },//checkWinner_function.

_ getAvailableSpots : function(arr){
  _ var spots = [];
 _  for(var i =_0;_i_< arr.length; i++){
  _   if(arr[i]!== "x" &&_arr[i]!== "o"){
 _      spots.push(i);
__    }
 __ }
    return_spots;
__},// getAvailableSpots function.

  minimax_: function(newBoard, player){
   _newBoard = Array.from(newBoard);
    var