add () {
this.count += 1 //控制变量
var a = ''
(chartList) //一个数组装着20个对象
a= this.chartList.slice((this.count-1)*5,(this.count-1)*5+5) //截取5个数据
console.log(this.count, 123)
if (this.count<=1) {
this.arr = a //进入页面显示五个
} else {
this.arr = this.arr.unshift(a) //变量大于1,我就让截取后面的五个放入到数组前面
console.log(this.arr, '????????') 打印的数字 6
}
console.log(this.arr, 'shi') // 6
}
请问这是什么原因啊?
你调用的时候是不是直接add () 这样用的,而且你这样在构造函数中this.count += 1,这样写是错误的,现在你的问题应该你在直接add () 前,外面有了一个a 的全局变量, window.a=0 或者 a =0 或者 var a=0 ,
(构造函数没用new运算符,内部this即为window)
所以当你在调用add函数时,没报错而走下来到:this.count +=1,此时this.count == 1,接下来走到if (this.count<=1) 时,就先this.arr = a,此时this.arr.length == 5 , 当你再一次add () 时直接走的是else这一块,
即this.arr = this.arr.unshift(a),而此时的a原本也是5个长度的数组,但是你用了unshift,导致,把a当成一个对象插到了前面,些时this.arr.length == 6,而unshift这个数组方法,在每次加入了对象后,就会返回,新数组的长度,所以此时
实际的 this.arr值为 this.arr==6,不是unshift,push这两货填的是数字,是他们返回的是数字,不知楼主明白了没有,我看快下班了,纯手打,望给满分
关键点就是---------不是unshift,push这两货填的是数字,是他们返回的是数字,题主js基础还要多学习的,构造函数不能这么用的