Я обнаружил очень странное поведение массива, когда он используется в классе ... Я пытался выяснить, что происходит, но я не мог обернуться. Вот что произошло.
class wtf{
constructor(){
this.array=[0,2,3];
this.fn=this.fn.bind(this);
}
fn(){
console.log(this.array.slice(0,this.length));// will print [0,2,3]
console.log(this.array.slice(0,this.length-1));// will print an empty array
}
}
const k=new wtf();
k.fn();
Это работает совершенно нормально, когда я пытаюсь получить весь массив, используя this.array.slice(0,this.length)
. Это даст мне полный массив. Но затем, когда я пытаюсь использовать this.array.slice(0,this.length-1)
, чтобы получить массив, не включающий последний элемент, он даст мне пустой массив вместо того, что я хотел. Кажется, это происходит только тогда, когда это написано в методе объекта. Потому что он нормально работает.
const array=[0,2,3];
console.log(array.slice(0,this.length-1)); // will print [0,2]
Я пытался удалить метод bind
, чтобы посмотреть, влияет ли это на поведение, но все равно дает мне тот же результат ...
Может кто-нибудь объяснит, почему это происходит?