【发布时间】:2020-04-02 02:47:17
【问题描述】:
当在类中使用数组时,我发现了一个非常奇怪的行为......我一直试图弄清楚发生了什么,但我无法理解。所以这就是发生的事情。
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 方法以查看这是否会影响行为,但它仍然给我相同的结果...
有人可以解释为什么会这样吗?
【问题讨论】:
标签: javascript arrays oop methods slice