I'm trying to understand Array Method, when I write code in vs code and call only array.prototype.concate.call() gives me the correct result,
console.log(Array.prototype.concat({}, 1, 2, 3));
but when I try to array.concate() it gives me an error.
console.log(Array.concat({}, 1, 2, 3));
error message:
TypeError: Array.concat is not a function
CodePudding user response:
Not a huge expert, but you might want to review:
In your terminal, web console, if you type Array.prototype, it will basically create an empty array with all of the methods for an array for you, so 'Array.prototype' is an array.
So,
Array.prototype.concat({}, 1, 2, 3)
and
[].concat({}, 1, 2, 3)
give the same result.
Given an instance arr of Array, arr.method is equivalent to Array.prototype.method.
You might read this as well: SO link
CodePudding user response:
concat() method actually ....concats TWO(or more) arrays, it merges them. The way you are calling it, through Array.prototype is equivalent to doing [].concat({}, 1, 2, 3)
which means merge an empty array with the values {},1,2,3.
The proper way to use it is like
const num1 = [1, 2, 3];
const num2 = [4, 5, 6];
num1.concat(num2)
Array.concat doesn't exist as concat is a method of Array.prototype. The reason
num1.concat(num2) works is because num1 is an Array with prototype object as property that contains all these array functions you can use
