- JavaScript is case-sensitive. Calling
new array()
andnew object()
will throw aReferenceError
since they don't exist. - It's better to avoid
new Array()
due to its error-prone behavior.
Instead, assign the new array with= [val1, val2, val_n]
. For objects, use= {}
. - There are many ways when it comes to extending an array (as shown in John's answer) but the safest way would be just to use
concat
instead ofpush
.concat
returns a new array, leaving the original array untouched.push
mutates the calling array which should be avoided, especially if the array is globally defined. - It's also a good practice to freeze the object as well as the new array in order to avoid unintended mutations. A frozen object is neither mutable nor extensible (shallowly).
Applying those points and to answer your two questions, you could define a function like this:
function appendObjTo(thatArray, newObj) {
const frozenObj = Object.freeze(newObj);
return Object.freeze(thatArray.concat(frozenObj));
}
Usage:
// Given
const myArray = ["A", "B"];
// "save it to a variable"
const newArray = appendObjTo(myArray, {hello: "world!"});
// returns: ["A", "B", {hello: "world!"}]. myArray did not change.