یک 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
در واقع نوع را تعریف میکند نه تابع تابع سازنده را.