Weird object key : value behavior

Hi all. Here is my code and I will ask my question in the bottom:

// Returns a random DNA base
const returnRandBase = () => {
  const dnaBases = ['A', 'T', 'C', 'G'];
  return dnaBases[Math.floor(Math.random() * 4)];
};

// Returns a random single stand of DNA containing 15 bases
const mockUpStrand = () => {
  const newStrand = [];
  for (let i = 0; i < 15; i++) {
    newStrand.push(returnRandBase());
  }
  return newStrand;
};

function pAequorFactory(specimenNum, dna){
  return {
    specimenNum: specimenNum,
    dna: dna,
    mutate(){
      let i = Math.floor(Math.random() * 15)
      let newGene = returnRandBase()
      while (this.dna[i] === newGene){
        newGene = returnRandBase()
      }
      this.dna[i] = newGene
      return this.dna
    },

    compareDNA(object){
      let counter = 0
      for(let i = 0; i < this.dna().length; i++){
        if(this.dna()[i] === object.dna()[i]){
          counter++
        }
      }
      let percentage = counter / this.dna().length * 100
      return `Specimen number ${this.specimenNum} and specimen number ${object.specimenNum} have ${percentage}% of DNA in common.`
      },
    }
  }

let aligator = pAequorFactory(1, mockUpStrand)
let dog = pAequorFactory(2, mockUpStrand)
console.log(aligator.compareDNA(dog))

console.log(dog.dna().length)

Why every time I want to access dna’s value I need to use parentheses. For example:
let percentage = counter / this.dna().length * 100
It doesn’t work without them and Ive noticed that nobody, who posted their solution here, used them. Even in my previous method (mutate) I did not use parentheses.
What am I doing wrong?

The problem is here:

let aligator = pAequorFactory(1, mockUpStrand)
let dog = pAequorFactory(2, mockUpStrand)

You want the .dna to be the result of calling mockUpStrand, not another reference to the mockUpStrand function.
So, to get what mockUpStrand returns,
you should use
mockUpStrand()
instead of
mockUpStrand

so that .dna is not a function, but rather, the array returned from calling mockUpStrand.

let aligator = pAequorFactory(1, mockUpStrand() );
let dog = pAequorFactory(2, mockUpStrand() );