9021年末了,忽然想在這個最後一個月準備一下,試試機會,可否更進一步。因此開始準備一些基礎知識,也隨帶總結出來給各位想換工做的同窗。但願你們能找到本身想要的工做。祝你們好運! html
若是你知道更多的方式評論給我。謝謝!es6
總結回顧面試
var array = [];
array instanceof Array;
複製代碼
PS:instanceof的實現原理(判斷左邊對象的原型鏈上是否存在右邊原型) 瀏覽器
function myInstanceof(left, right) {
let right = right.prototype;
let left = left.__proto__;
while (true) {
if (left === null || rigth === undefined) {
return false;
} else {
if (left === right) {
return true;
} else {
left = left.__proto__;
}
}
}
}
複製代碼
var array = [];
array.constructor === Array
複製代碼
PS:instanceof和constructor判斷的變量,必須在當前頁面申明的,好比,一個頁面(父頁面)同樣一個框架,框架中引入一個頁面(子頁面),在子頁面中聲明的array,並將其複製給父元素的一個變量,判斷該變量,將返回false。 bash
緣由:array是複合類型。在傳遞的過程當中,僅僅是引用地址的傳遞。 每一個頁面的array原生對象引用的地址是不同的,在子頁面中聲明的array,所對應的構造函數,是子頁面的array對象,在父頁面進行判斷時,使用的並非子頁面的array; 框架
var array = [];
array.__proto__.constructor === Array;
複製代碼
每一個對象都有一個__proto__屬性,該屬性指向構造函數的原型對象,對象能夠經過這個屬性訪問到構造函數的原型對象,__proto__屬性是沒有寫入ES6正文的屬性, 而是寫入了附錄中,緣由是他本質上是一個內部屬性,而不是一個正式的API,只是被瀏覽器普遍支持,才被加入ES6,只有瀏覽器有這個屬性,其餘環境是沒有。因此重某種角度來講,咱們是不建議在實際生產中使用的,而是使用Object.getPrototypeOf(target)來進行操做。 函數
var array = [];
Object.getPrototypeOf(array).constructor === Array;
複製代碼
var array = [];
Array.isArray(array);
複製代碼
es6中加入了新的判斷方法,存在兼容性問題。 post
考慮Array.isArray的兼容性問題ui
if(!Array.isArray){
Array.isArray = function(arg){
return Object.prototype.toString.call(arg)==='[object Array]';
}
}
var array = [];
Array.isArray(array);
複製代碼