Zaktualizuj tabelę javascript: Uncaught TypeError: Object [object Object] nie ma metody 'tableRow'

Tworzę aplikację kontaktów, która aktualizuje tabelę za pomocą danych wejściowych użytkowników, ale nie wydaje mi się, aby tabela została zaktualizowana po wprowadzeniu danych Otrzymuję tylko błąd powyżej. Nie jestem pewien, jak zmienić metodę, wypróbowałem wiele różnych funkcji itp., Ale nie mam szczęścia.

var nameField, addressField, emailField, postcodeField;

function twoDigit(v){
if(v.toString().length < 2){
    return "0"+v.toString();
} else {
    return v.toString();
}
}

var Contact = function(name, address, email, postcode){
this.name = name;
this.address = address;
this.email = email;
this.postcode = postcode;
this.completed = false;
};

var contacts = [];

Contact.prototype.toString = function(){
var s = this.name + '\n' + this.address + '\n' + this.email + + '/n'
  +  this.postcode.toString() + '\n';
if(this.completed){
    s += "Completed\n\n";
} else {
    s += "Not Completed\n\n";
}
return s;
};

var addContact = function(nameField, addressField, emailField, postcodeField){
a = new Contact(nameField.value, addressField.value, 
emailField.value, postcodeField.value);
contacts.push(a);
};

var clearUI = function(){
var white = "#fff";
nameField.value = "";
nameField.style.backgroundColor = white;
addressField.value = "";
addressField.style.backgroundColor = white;
emailField.value = "";
emailField.style.backgroundColor = white;
postcodeField.value = "";
postcodeField.style.backgroundColor = white;

};

var updateList = function(){
var tableDiv = document.getElementById("table"),
    table = "<table border='1'><thead><th>Name</th>
<th>Address</th><th>Email</th><th>Postcode</th><th>Completed</th></thead>";

for(var i=0, j=contacts.length; i<j; i++){
    var contacts1 = contacts[i];
     table += contacts1.tableRow();
}
table+="</table>";
tableDiv.innerHTML = table;
};

var add = function(){
addContact(nameField, addressField, emailField, postcodeField);
clearUI();
updateList();
};

var cancel = function(){
clearUI();
updateList();
};

window.onload = function(){
nameField = document.getElementById("name");
addressField = document.getElementById("address");
emailField = document.getElementById("email");
postcodeField = document.getElementById("postcode");
okButton = document.getElementById("ok");
okButton.onclick = add;
cancelButton = document.getElementById("cancel");
cancelButton.onclick = cancel;
clearUI();
}; 

var showTable = function(){
var tableDiv = document.getElementById("table"),
    table = "<table border='1'><thead><th>Name</th>
<th>Address</th><th>Email</th>  <th>Postcode</th></thead>";

for(var i=0, j=contacts.length; i<j; i++){
    var contacts1 = contacts[i];
    table += contacts1.tableRow();
}
table+="</table>";
tableDiv.innerHTML = table;
};

questionAnswers(0)

yourAnswerToTheQuestion