JavaScript Object Oriented Programming: The instanceof operator
05 Feb 2016The instanceof operator
instanceof
允許檢查物件是否為給定的 constructor 所產生的。
function Rabbit() {}
var rabbit = new Rabbit();
console.log(rabbit instanceof Rabbit); // ture
rabbit 的 constructor 的確是 Rabbit。
When instanceof lies
當值是來自另外一個 frame 或 iframe,instanceof
這個 operator 所取得的值是不準確的。例如,一個來自另外一個 iframe 的 array。每一個 frame 或 iframe 有自己的 window 物件和其繼承關係。解法可參考 [[Class]] to differ between native objects。
Summary
instanceof
允許檢查物件是否為給定的 constructor 所產生的。檢查方式是走訪整個__proto__
鍊,因此繼承是成立的。
var arr = [];
alert(arr instanceof Array); // true
alert(arr instanceof Object); // true
- 當值是來自另外一個 frame 或 iframe,
instanceof
這個 operator 所取得的值是不準確的。例如,一個來自另外一個 iframe 的 array。每一個 frame 或 iframe 有自己的 window 物件和其繼承關係。解法可參考-[[Class]] to differ between native objects。
Reference
這篇文章的原始位置在這裡-JavaScript Object Oriented Programming - The instanceof operator
由於部落格搬遷至此,因此在這裡放了一份,以便閱讀;部份文章片段也做了些許修改,以期提供更好的內容。