最近在研究Vue的源碼,在數(shù)組變異實現(xiàn)的時候有有一個地方存在疑問:Vue是通過設置一個數(shù)組重新對push、pop等數(shù)組方法進行封裝,從而能監(jiān)聽到數(shù)組的變動,如下:const arr = [];[ 'push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'].forEach(method => { arr[method] = function () { console.log('監(jiān)聽到數(shù)組變動') }})那么問題來了,arr這個變量是以一個數(shù)組定義的,按道理應該可以直接通過數(shù)組下標arr[0]來訪問里面的元素,可事實上這樣是返回的是undefined,通過key的形式取值是可以的,例如arr['push']:再從控制臺查看arr,看到他的length居然是0!如下:上面兩個跡象可以看到這個arr的表現(xiàn)跟Object是完全一樣的,但是當我對arr使用Array.isArray(arr)時,結果返回的是true,說明arr是一個數(shù)組,請問這個arr到時是個什么類型呢?
這個數(shù)據類型到底是Array還是Object?
qq_笑_17
2019-02-20 22:19:12