یک instanceof عجیب
اهمیت: 5
در ک پایین، چرا instanceof مقدار true را برمیگرداند؟ ما میتوانیم به راحتی ببینیم که a توسط B() ساخته نشده است.
function A() {}
function B() {}
A.prototype = B.prototype = {};
let a = new A();
alert( a instanceof B ); // true
بله، واقعا عجیب به نظر میرسد.
اما instanceof به تابع اهمیتی نمیدهد بلکه prototype آن مهم است که در زنجیره پروتوتایپی همتای آن پیدا شود.
و اینجا a.__proto__ == B.prototype برقرار است پس instanceof مقدار true برمیگرداند.
پس بنابر منطق instanceof، ویژگی prototype در واقع نوع را تعریف میکند نه تابع تابع سازنده را.